2016-09-08 262 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

谢谢。那是我需要的 –