Typescript 使用Redux和可选项键入Immutable.js

Typescript 使用Redux和可选项键入Immutable.js,typescript,redux,immutable.js,Typescript,Redux,Immutable.js,我刚刚将Immutable.js合并到一个小的React/Redux+Typescript项目中,由于键入问题,我真的不确定这是否是一种方法。我想听听更有经验的程序员的意见 js的明显好处是它可以使您的状态保持不变 缺点是完全没有打字。getIn和setIn是与数据交互的主要手段,尤其是与商店的数据交互。它越嵌套,就越痛苦和危险。此外,更改存储结构将不再产生任何错误-您将在整个项目中留下大量的设置,每个设置都需要查找和修复。重构变得极其危险 我听过很多人称赞Immutable.js,但它真的值得

我刚刚将Immutable.js合并到一个小的React/Redux+Typescript项目中,由于键入问题,我真的不确定这是否是一种方法。我想听听更有经验的程序员的意见

js的明显好处是它可以使您的状态保持不变

缺点是完全没有打字。getIn和setIn是与数据交互的主要手段,尤其是与商店的数据交互。它越嵌套,就越痛苦和危险。此外,更改存储结构将不再产生任何错误-您将在整个项目中留下大量的设置,每个设置都需要查找和修复。重构变得极其危险

我听过很多人称赞Immutable.js,但它真的值得因缺少键入而付出的所有痛苦吗


有哪些替代方案?为什么我会/不会在每个reducer开始时使用某种库来深度克隆状态?

我不喜欢使用复杂的嵌套Redux状态。 这里有一篇文章介绍了如何规范化数据结构:

请注意以下解释:

请注意,数据的结构有点复杂,有些 重复数据。这是一个令人担忧的问题,原因如下:

嵌套数据意味着相应的减速器逻辑必须更加嵌套,因此更加复杂。特别是,尝试更新嵌套很深的字段可能会变得非常丑陋,而且速度非常快。 因此,管理Redux存储中的关系数据或嵌套数据的推荐方法是将存储的一部分视为数据库,并以规范化的形式保存该数据

另一个受欢迎的图书馆是