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 каждый раз, когда вы добавляете/удаляете файл.