- если типы нужны только модулю, то хранить и объявлять их внутри этого же модуля
- если типы являются частью публичного интерфейса только одного модуля, то хранить, объявлять и экспортировать в этом же модуле
- если типы описывают какую-то универсальную сущность, которая может использоваться\создаваться в разных модулях, то их надо хранить в отдельном модуле и не смешивать с другими типами. То есть не надо делать файл types.ts и сваливать туда все такие типы, нужно разбивать по разным файлам по доменам использования.
- про d.ts для своего кода можешь забыть, создавать d.ts это работа комплиятора. d.ts нужен только если ты хочешь импортировать npm модуль, а для него нет уже написанной типизации. Тогда ты создаешь d.ts и типизируешь этот модуль сам. Так же через d.ts описываются *.json, *.svg, *.css модули.
Типы вырезаются после компиляции вместе с их импортами, поэтому отделять типы от их реализации без особой нужды бессмысленно
На данный момент, если тип используется только в самом компоненте, держу его в module=context самого компонента. Если же тип встречается слишком часто, то создал main.d.ts, в который указываю:
/// <reference path="./module.d.ts" />
В подобных модулях всегда держу namespaces.
Импорты везде и повсюду надоели и попробовал так, в итоге глобально всё доступно, добавив в tsconfig
"files": [
"src/types/main.d.ts"
]
Пробую всякое, в общем, ради интереса😅