2016-09-08 234 views
0

我想擴展Map類的功能。例如,我想這樣做以下:擴展Immutable.js類型

const someMap = Immutable.Map({ a: 1, b: 2 }); 
const {a, b} = someMap.batchGet('a,' 'b'); 

我怎樣才能正確地添加「batchGet」的方法來映射類?

回答

2

不幸的是,核心不可變類在默認情況下是不可擴展的。這是一個阻止反模式和提高性能的設計決策,詳情請參閱this discussion

也就是說,您可以使用extendable-immutable來擴展Immutable,這是philpl爲響應上面的github問題而創建的。對你來說,看起來像:

import { Map } from 'extendable-immutable' 

class MyMap extends Map { 
    batchGet (...keys) { 
    let result = {} 
    keys.forEach(key => { result[key] = this.get(key) }) 
    return result 
    } 
} 

const myMap = MyMap({ a: 1, b: 2 }) 
const {a, b} = myMap.batchGet('a', 'b') 
+0

謝謝。那是我需要的 –