Как создать файл определения TypeScript (d.ts) для библиотеки umd

#typescript #webpack #definitelytyped #umd

#typescript #webpack #definitelytyped #umd

Вопрос:

Я работаю над библиотекой surveyjs

Для сборки пакета umd используется gulp webpack.

Я хочу создать пакет определения типа (или может быть просто несколько файлов d.ts) для использования в проектах typescript. Я хотел бы иметь что-то подобное:

 import * as Survey from 'surveyjs';
  

Все содержимое для опроса.* описано здесь:
https://github.com/dmitrykurmanov/surveyjs/blob/master/src/entries/ko.ts

Я пытался использовать:github.com/SitePen/dts-generator и github.com/TypeStrong/dts-bundle но без успеха, не мог бы кто-нибудь, пожалуйста, показать мне правильное направление?

Комментарии:

1. хм.. вы также можете настроить tsc в tscconfig.json для вывода объявлений, используя флаг declaration .

2. Наконец-то мы реализовали это с помощью dts-bundle

Ответ №1:

Вы можете попросить tsc сгенерировать файлы объявлений для вашего кода, добавив флаг объявления в tsconfig.json.

В вашем случае это было бы:

 {
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "sourceMap": true,
    "noImplicitAny": false,
    "jsx": "react",
    "declaration": true
  },
//  "filesGlob": [
  //    "typings/index.d.ts"
  //  ], // TODO
  "include": [
    "typings/index.d.ts",
    "src/**/*"
  ],
  "exclude": [
    "node_modules",
    "**/*.spec.ts"
  ]
}
  

Комментарии:

1. Да, это так. Проблема в потоковом выводе webpack. Это всего лишь js bundle, но как я могу получить d.ts? Итак, я запускаю компилятор ‘gulp-typescript’ отдельно и генерирую d.ts. Это не круто.

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

3. И еще одна проблема — bundle.d.ts. Возможно ли это создать? Я нашел два проекта github.com/TypeStrong/dts-bundle и github.com/SitePen/dts-generator Мне не удалось их настроить. У кого-нибудь есть примеры успеха?

4. @tokv, хорошо, я создам другие вопросы о webpack-stream и bundle.d.ts

Ответ №2:

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

Вы можете ознакомиться с ним здесь:https://www.npmjs.com/package/typescript-declaration-webpack-plugin