Модули 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';
....