如何避免原生 Map 与 Immutable.Map 混淆?
我使用immutable.js在 React 项目中(ES6 或更高版本,用 babel 转译)。 所以很多文件都是以这样的导入开始的:
import { Map } from 'immutable';
一切都很好,直到有人将上述导入添加到使用 native JS Map 的文件中。 ,这样 new Map()
就变成了 Immutable.Map
。
因此,我可以导入整个不可变库(import Immutable from 'immutable';
)并使用 Immutable.Map
引用它。但是,这可能会影响生成代码的大小(编译器可能无法发现未使用整个导入的库)并且可能看起来不太好。
有更好的解决方案吗?我可以以某种方式专门引用原生 JS Map 吗?
最佳答案
这里有两个选择。我喜欢第一个,但是 YMMV。
原生 JavaScript 模块不仅允许您为整个库导入添加别名,还可以为 individual named imports 指定别名。 :
从 'immutable' 导入 {Map as IMap};
。现在不存在冲突,并且您的 bundle 大小应该更小。额外的好处:代码的意图对于 future 的维护者来说可能会变得更加清晰,他们现在会立即知道他们处理的不是普通的原生 map 。实际的构造函数是全局上下文的一个属性:只需引用
<window.Map
,它不会与您导入到模块命名空间中的构造函数发生冲突。
关于javascript - 避免将 JS Map 与 Immutable Map 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198215/