TypeScript: Можно ли импортировать папку без записи файла index.ts?
Если в большинстве каталогов проекта содержится не более 2-3 файлов TypeScript, и весь их экспорт должен быть доступен при импорте содержащего каталог в другое место, это приводит к большому количеству файлов index.ts
с предсказуемым контентом.
Пример
Каталог: my-component
my-component-config.ts
my-component.ts
index.ts
Что содержит index.ts
? Конечно, он содержит
export * from "./my-component-config"
export * from "./my-component"
Это очевидно.
Для 10-компонентных каталогов это означает: 10 index.ts
файлов, содержащих 100% избыточную информацию.
Как я могу сделать TypeScript (/Node) неявно создавать файлы index.ts
"на лету", которые не должны храниться на жестком диске?
Ответы
Ответ 1
Компонент не является четко определенной концепцией в TypeScript и node.js, но модуль и пакет.
В общем, модуль является исходным файлом, пусть игнорирует исключения. Таким образом, создавая файлы index.ts
для каждого каталога, вы создаете фасадные модули, объединяющие только несколько файлов/модулей. Если все, что вам нужно сделать, это организовать исходные файлы в логические компоненты, вам не нужен фасад для каждого каталога, вы можете просто импортировать каждый файл отдельно, а не каталог за раз.
На более высоком уровне, если у вас есть пакет, состоящий из нескольких разных каталогов, он может иметь фасад одиночный index.ts
на уровне пакета. Этот файл будет экспортировать каждый файл/модуль только один раз, не нужно index.ts
для каждого каталога. Таким образом, это может выглядеть (если каждый из них является файлом .ts):
export * from './IntStream';
export * from './misc/Interval';
export * from './misc/IntervalSet';
export * from './Lexer';
...
Ответ 2
Я не думаю, что есть способ импортировать каталог в TS без и индексный файл
проверьте эти вопросы, если у вас нет
Как импортировать все модули из каталога в TypeScript?
Typescript 1.8 модули: импортировать все файлы из папки
Я думаю, лучший способ - написать script для генерации index.ts
, который импортирует все файлы в каталоге и запускает этот script каждый раз, когда вы добавляете/удаляете файл.