Если вы создаете библиотеку для приложений Angular, ваш код может содержать такие импорты:

import {InternalService} from './core';

Это очень простой импорт TypeScript, который просто загружает что-то внутреннее из core вашей библиотеки.

Путь к core на самом деле сначала не превращается в путь, потому что он просто ссылается на папку с именем core/.

Такой импорт работает, только если в данной папке есть файл index.ts. TypeScript автоматически загружает файл core/index.ts под капотом.

src/
|- core/
|-- index.ts       # File that will be imported "under-the-hood"
|- the-importer.ts # File that contains the import statement.

Сокращение импорта отлично подходит для разработки и для большинства упаковщиков.

Но некоторые сборщики, такие как SystemJS, не могут их понять. Это приводит к тому, что ваша библиотека не работает должным образом для пользователей SystemJS.

Примечание. Есть еще способы настроить SystemJS для загрузки index файлов для импорта каталогов. Но это очень болезненно для ваших пользователей!

Это не означает, что вы должны переключиться на более явный импорт, потому что сокращения импорта, безусловно, очень удобны.

При использовании Angular Compiler-CLI сокращения импорта будут автоматически преобразованы в более явные операторы импорта, такие как:

import {InternalService} from './core/index';

Примечание. Эта функция работает только при таргетинге на ES2015 /(ES6) и если ваша библиотека будет аннотирована для закрытия.

Потому что, как только вы укажете опцию annotateForClosureCompiler внутри вашего tsconfig.json , компилятор Angular будет использовать инструмент под названием tsickle для преобразования вашего сокращенного импорта в явный импорт.

"angularCompilerOptions": {
  "annotateForClosureCompiler": true
}

См. доклад Джейсона Адена о упаковочных библиотеках: https://goo.gl/7gqZBr

Использование этого объясненного подхода гарантирует, что ваша библиотека будет работать для всех ваших пользователей без каких-либо проблем.

Кроме того, вы, как автор библиотеки, по-прежнему можете использовать сокращения импорта для разработки!

Спасибо за чтение. Дайте знать, если у вас появятся вопросы!

— @devversion в Твиттере.