我想扩展Map类的功能。例如,我想做以下事情:
const someMap = Immutable.Map({ a: 1, b: 2 });
const {a, b} = someMap.batchGet('a,' 'b');
如何正确添加' batchGet' Map类的方法?
答案 0 :(得分:2)
不幸的是,默认情况下,核心不可变类不可扩展。这是阻止反模式和提高性能的设计决策,有关详细信息,请参阅this discussion。
也就是说,你可以使用extendable-immutable来扩展Immutable,这是为响应上面的github问题而创建的philpl。对你来说,这看起来像是:
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')