我已经使用 React.js 完成了几个项目。他们中的一些人使用了 Flux,一些 Redux 和一些只是使用 Context 的普通 React 应用程序。
我真的很喜欢 Redux 使用函数式模式的方式。但是,开发人员很有可能无意中改变了状态。在寻找解决方案时,基本上只有一个答案——Immutable.js。老实说,我讨厌这个图书馆。它完全改变了您使用 JavaScript 的方式。此外,它必须在整个应用程序中实现,否则当一些对象是纯 JS 而一些是不可变结构时,你最终会遇到奇怪的错误。或者你开始使用.toJS()
,这又 - 非常非常糟糕。
最近,我的一位同事建议使用 TypeScript。除了类型安全之外,它还有一个有趣的特性——您可以定义自己的数据结构,这些数据结构的所有字段都标记为readonly
. 这样的结构基本上是不可变的。
我不是 Immutable.js 或 TypeScript 的专家。然而,在 Redux 存储中拥有不可变数据结构并且不使用 Immutable.js 的Promise似乎好得令人难以置信。TypeScript 是readonly
Immutable.js 的合适替代品吗?或者有什么隐藏的问题?