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

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

Он использует gulp + webpack для создания пакета umd.

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

import * as Survey from 'surveyjs';

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

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


person Dmitry Kurmanov    schedule 20.10.2016    source источник
comment
эээ .. вы можете настроить tsc в tscconfig.json для вывода деклараций, используя флаг декларация.   -  person toskv    schedule 20.10.2016
comment
Наконец, мы реализовали это с помощью dts-bundle   -  person Dmitry Kurmanov    schedule 20.04.2017


Ответы (2)


Вы можете попросить 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"
  ]
}
person toskv    schedule 20.10.2016
comment
Да, это. Проблема в выводе webpack-потока. Это просто пакет js, но как мне получить d.ts? Поэтому я запускаю компилятор gulp-typescript отдельно и генерирую d.ts. Это не круто. - person Dmitry Kurmanov; 21.10.2016
comment
это действительно во многом зависит от ваших настроек ... если вы хотите получить более конкретный ответ, вы должны поделиться этим. - person toskv; 21.10.2016
comment
И еще одна проблема - bundle.d.ts. Возможно ли это создать? Я нашел два проекта github.com/TypeStrong/dts-bundle и github.com/SitePen/dts-generator. Мне не удалось их настроить. Есть у кого-нибудь примеры успеха? - person Dmitry Kurmanov; 21.10.2016
comment
@tokv, хорошо, я создам еще вопросы по webpack-stream и bundle.d.ts - person Dmitry Kurmanov; 21.10.2016

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

Вы можете проверить это здесь: https://www.npmjs.com/package/typescript-declaration-webpack-plugin

person Aaron Schmid    schedule 20.07.2018