假设一个应用程序围绕两个关键实体:

  • 个人

一个小组可以包含许多人 . 个人可以属于许多群体 . 明确的多对多关系 .

对于React应用程序,建议使用normalise the state shape . 因此,在该州,两个实体彼此分开 . 另一方面,UI显示组的列表以及它们对应的个体,反之亦然 . 这需要非规范化表示,其中每个实体包含另一种类型的列表 .

设计此应用程序的(TypeScript / Flow)类型的最佳途径是什么?我能想到至少三种选择:

  • 对状态和UI使用相同的类型 - 例如type Group 获取一个可选的 individuals?: Individual[] 字段,根据使用该类型的上下文设置

  • 创建规范化和非规范化版本 - 例如 Group (规范化,在状态存储中使用)和 GroupUI (非规范化,从 GroupIndividual[] 构建,在UI中使用)

  • 完全独立的状态和UI类型,确保它们不相互依赖,让它们存在于单独的文件中,等等 .

处理此问题的推荐方法是什么?优点缺点?