Проектирование (TypeScript / Flow) типов для состояния React и данных пользовательского интерфейса - PullRequest
0 голосов
/ 05 октября 2018

Допустим, приложение вращается вокруг двух ключевых сущностей:

  • отдельный
  • группа

В группе может быть много отдельных лиц.Люди могут принадлежать ко многим группам.Четкое соотношение «многие ко многим».

Для приложений React рекомендуется нормализовать форму состояния .Поэтому в государстве обе сущности живут отдельно друг от друга.Пользовательский интерфейс, с другой стороны, отображает список групп вместе с соответствующими лицами и наоборот.Это требует денормализованных представлений, где каждая сущность содержит список другого вида.

Какой самый разумный путь для разработки типов (TypeScript / Flow) этого приложения?Я могу представить как минимум три варианта:

  1. использовать одинаковые типы для состояния и пользовательского интерфейса - например, тип Group получает необязательное поле individuals?: Individual[], которое устанавливается в зависимости от контекста, в котором типиспользуется
  2. создание нормализованных и денормализованных версий - например, Group (нормализовано, используется в хранилище состояний) и GroupUI (денормализовано, построено из Group и Individual[], используется в пользовательском интерфейсе)
  3. полностью разделяют состояния и типы пользовательского интерфейса, следя за тем, чтобы они не зависели друг от друга, позволяя им жить в отдельных файлах и т. Д.

Каков рекомендуемый подход для работы сЭта проблема?Плюсы / минусы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...