javascript - 避免将 JS Map 与 Immutable Map 一起使用

标签 javascript ecmascript-6 immutable.js

如何避免原生 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。

  1. 原生 JavaScript 模块不仅允许您为整个库导入添加别名,还可以为 individual named imports 指定别名。 : 从 'immutable' 导入 {Map as IMap};。现在不存在冲突,并且您的 bundle 大小应该更小。额外的好处:代码的意图对于 future 的维护者来说可能会变得更加清晰,他们现在会立即知道他们处理的不是普通的原生 map 。

  2. 实际的构造函数是全局上下文的一个属性:只需引用 window.Map,它不会与您导入到模块命名空间中的构造函数发生冲突。

    <

关于javascript - 避免将 JS Map 与 Immutable Map 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198215/

相关文章:

javascript - 如何将 HTMLCollection 转换为数组而不清空它?

javascript - 给 JavaScript 对象的属性赋值

javascript - 你如何在 webpack 中渲染嵌套的 SASS?

javascript - 不可变的 getIn 返回 null 但不返回 notSetValue

javascript - Immutable.fromJS 性能问题

javascript - POST 请求仅在服务器启动后第二次有效

javascript - 添加一天至今 - 避开周末(周六、周日)

javascript - 有没有办法重组解构任务的一部分?

javascript - 有没有办法将这两行合二为一?

immutable.js - 不可变js中的contains和includes方法有什么区别