扩展Immutable.js类型

时间:2016-09-08 15:33:02

标签: immutable.js

我想扩展Map类的功能。例如,我想做以下事情:

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

如何正确添加' batchGet' Map类的方法?

1 个答案:

答案 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')