Модули Typescript 1.8: импорт всех файлов из папки
Я создаю большую библиотеку с Typescript с 100 отдельными файлами ts. Ранее я использовал модуль экспорта XXX (переименован в экспорт пространства имен XXX позже) для всех моих классов, но, как говорят книги, это не рекомендуется, я должен использовать импорт вместо этого.
поэтому я попытался импортировать. Это сработало отлично:
import * as mylib from "./source/source.ts";
но поскольку у меня есть 100 файлов, я не хочу добавлять такую строку для всех из них. И я хочу, чтобы все мои занятия были доступны через библиотеки MyLib переменной.
поэтому я попробовал это:
import * as mylib from "./source/";
но как только я это делаю, я получаю:не удается найти модуль './ source/'
есть ли способ импортировать все классы из папки с несколькими файлами с одной строкой?
1 ответов
обе стратегии разрешения модулей, которые предоставляет tsc, не поддерживают такое поведение. Какой ваш желаемый оператор импорта
import * as mylib from "./source/";
на самом деле делает это, чтобы выполнить проверки в этом порядке:
1. (does package.json have a typings key? If so, import this file)
2. import * as mylib from "./source/index.ts";
3. import * as mylib from "./source/index.tsx";
4. import * as mylib from "./source/index.d.ts";
Я предполагаю, что вы используете разрешение модуля в стиле узла здесь, что вы, вероятно, так как это рекомендуемый способ. Проверьте typescript docs для получения более подробной информации о том, как разрешение модуля выполняется в typescript.
обычно, что вы пытаетесь выполнить это, создав index.d.ts
файл, который служит точкой входа, из которой вы экспортируете остальные модули.
Я использую angular2 в качестве примера:
Ваш общий импорт angular2 выглядит так:
import { Injectable } from '@angular/core'
core
- это просто каталог, который живет внутри . Как ваш . Однако в основном каталоге находится :
/**
* @module
* @description
* Starting point to import all public core APIs.
*/
export * from './src/metadata';
export * from './src/util';
export * from './src/di';
....