Файл .d.ts не включен для типов экспорта вложенных файлов - PullRequest
0 голосов
/ 24 сентября 2019

Я использую webpack и awesome-typescript-loader для связывания моего проекта и создания файлов .d.ts.У меня есть такая структура:

src
  - main.ts
  - types
    - index.ts
    - SomeType.ts

в main.ts Я экспортирую все:

export * from './types';
export default ...

и types / index.ts выглядит так:

export * from './SomeType.ts';

При создании проекта отсутствует все в папке типов, но я ожидаю, что будут созданы файлы .d.ts, чтобы я мог импортировать эти типы в другие проекты.

Мой tsconfig:

{
  "compilerOptions": {
    "removeComments": true,
    "moduleResolution": "node",
    "preserveConstEnums": true,
    "declaration": true,
    "sourceMap": true,
    "outDir": "./dist/",
    "noImplicitAny": true,
    "module": "esnext",
    "target": "es5",
    "lib": ["es2018", "dom"]
  },
  "include": ["src/**/*"],
  "awesomeTypescriptLoaderOptions": {
    "reportFiles": ["src/**/*.{ts,tsx}"]
  }
}

1 Ответ

1 голос
/ 25 сентября 2019

awesome-typescript-loader, по-видимому, ведет себя иначе, чем ts-loader и tsc в отношении выдачи объявлений из файлов ts с только содержащимися объявлениями типов.

Для данного файла types.ts только сэкспорт типа

export type MyType = "a"

и импорт в другой модуль index.ts

import { MyType } from "./types";

tsc и ts-loader оба выдают файл types.d.ts, содержащий тип, но неустрашающий-машинопись-погрузчик.Я не могу сказать вам точную причину здесь - единственная ссылка, которую я нашел, заключается в том, что awesome-ts-loaders, по-видимому, пытается быть более интеллектуальным , основанным на более сложном подходе к разрешению зависимостей, который может иметь неприятные последствия в этом крайнем случае.В случае сомнений, я бы предположил, что tsc будет иметь правильное поведение ссылки.

В любом случае, более идиоматично переименовывать файлы ts только с объявлениями типов в расширение d.ts, так как вывод кода не выполняется.излучается.Таким образом, вы получите вопрос , почему файлы d.ts из исходного каталога не копируются в папку сборки tsc.

Самый простой способ для вас в этом случае - вручную скопировать необходимые файлы d.ts (для API публичной библиотеки или аналогичного) в dist с помощью шага ручной сборки.Или вы можете использовать новую предустановку набора текста babel с Webpack и иметь отдельный tsc этап компиляции только для объявлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...