Допустим, приложение вращается вокруг двух ключевых сущностей:
В группе может быть много отдельных лиц.Люди могут принадлежать ко многим группам.Четкое соотношение «многие ко многим».
Для приложений React рекомендуется нормализовать форму состояния .Поэтому в государстве обе сущности живут отдельно друг от друга.Пользовательский интерфейс, с другой стороны, отображает список групп вместе с соответствующими лицами и наоборот.Это требует денормализованных представлений, где каждая сущность содержит список другого вида.
Какой самый разумный путь для разработки типов (TypeScript / Flow) этого приложения?Я могу представить как минимум три варианта:
- использовать одинаковые типы для состояния и пользовательского интерфейса - например, тип
Group
получает необязательное поле individuals?: Individual[]
, которое устанавливается в зависимости от контекста, в котором типиспользуется - создание нормализованных и денормализованных версий - например,
Group
(нормализовано, используется в хранилище состояний) и GroupUI
(денормализовано, построено из Group
и Individual[]
, используется в пользовательском интерфейсе) - полностью разделяют состояния и типы пользовательского интерфейса, следя за тем, чтобы они не зависели друг от друга, позволяя им жить в отдельных файлах и т. Д.
Каков рекомендуемый подход для работы сЭта проблема?Плюсы / минусы?