Переименовать все namespace.ts в types.ts
sk1e opened this issue · comments
Не вижу ничего общего с определением https://en.wikipedia.org/wiki/Namespace
Добавляет путаницы
давно пора))
ага и импортировать как * as T, as TS
types.ts
действительно лучше namespace.ts
. Однако я в целом сейчас, особенно после опыта работы с Haskell проектами, стараюсь избегать файлов Types.(ts|hs)
, я стараюсь модули бить по бизнес-ценности, по функциональности, по семантике и тд, но не по признаку типы ли это или функции. Поэтому возможно все namespace.ts
на самом деле надо раскидать по model.ts
, redux-state.ts
и тд, которые будут в разных папках находиться, так как это разные слои абстракций
types.ts
действительно лучшеnamespace.ts
. Однако я в целом сейчас, особенно после опыта работы с Haskell проектами, стараюсь избегать файловTypes.(ts|hs)
, я стараюсь модули бить по бизнес-ценности, по функциональности, по семантике и тд, но не по признаку типы ли это или функции. Поэтому возможно всеnamespace.ts
на самом деле надо раскидать поmodel.ts
,redux-state.ts
и тд, которые будут в разных папках находиться, так как это разные слои абстракций
идея хорошая, но есть момент с моделями: часто возникает потребность в модулях которые имеют собственные модели и чтобы не путать с моделями приложения я не называю их моделями. Если допускать что в рамках приложения у нас разные множества моделей существуют, тогда каждое множество должен быть подчёркнуто именем модуля в котором оно находится, но доменные модели сейчас лежат в shared/types/models поэтому нужно завести каталог для модуля по работе с доменной областью, src/domainCore например. Тогда всё станет органичным
Ну мне кажется норм, что у тебя есть корневые модели, если модели модуля. Можно, конечно, доменные в корне складывать и называть просто domain, но там же не только модели предметки могут лежать :) Поэтому я предлагаю пока не заморачиваться, сделать модели в src как корневые, и если надо модуль может свои локальные модели тоже объявлять. По пути иерархия и так будет четко прослеживаться
можно поменять для ясности, также вместо import * as React заменить на import React с флагом esModuleInterop: true