Как сгенерировать файл определения типа из файлов TypeScript?

Я создал несколько классов и модулей на TypeScript. Другие приложения TypeScript могут напрямую использовать файлы TS без определения типов. Однако, чтобы опубликовать в npm, я думаю, мне нужно опубликовать как файлы JS, так и файлы определения типа. Я думаю, что было бы расточительно вручную создавать файлы d.ts, поэтому как сгенерировать файлы определения типа из файлов TypeScript?

Просто установите опцию компилятора "declaration": true

Aleksey L. 14.09.2018 08:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
1
3 133
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короткий ответ

Добавьте "declaration": true в свой tsconfig, чтобы файлы * .d.ts были сгенерированы вместе с файлами * .js.

Длинный ответ

Чтобы опубликовать файлы * .js и * .d.ts в npm, но не в github (обычно вы хотите сохранить только исходный код в исходном элементе управления), вам нужно сделать несколько вещей:

  1. Добавить "declaration": true в tsconfig
  2. Добавить "outDir": "dist" в tsconfig
  3. Добавить dist в .gitignore
  4. Добавьте .npmignore, как .gitignore, но без dist
  5. Добавьте "main": "dist/index.js" в package.json (обратите внимание на суффикс js и каталог dist)
  6. Добавьте "types": "dist/index.d.ts" в package.json (на этот раз обратите внимание на суффикс "ts" и каталог dist)

(Ваши имена файлов и каталоги, конечно, могут отличаться, выше предполагается, что ваш каталог распространения - dist, а ваша основная точка входа - index.ts)

Это без настройки сценариев сборки, просто минимум для публикации того, что вам нужно, чтобы другие модули и программы Node могли потребовать ваш модуль, использующий как JavaScript, так и TypeScript, без сохранения сгенерированных файлов под контролем источника.

Подробнее см .:

Это ответ, который я написал во время подготовки моего выступления о Deno (слайды, видео), пытаясь описать весь процесс публикации модулей Node, написанных на TypeScript, в npm, что именно вы делаете здесь, поэтому, возможно, вы найдете более полезную информацию не только о создании файлов .d.ts, но и о других связанных вещах.

Другие вопросы по теме

Похожие вопросы

Почему цвет заливки SVG не меняется при наведении курсора?
Когда я использую свойство externals webpack для разделения больших библиотек (таких как React), браузер сообщает об ошибке
Требуется ли платное расширение Chrome запрашивать разрешение на идентификацию, чтобы предлагать бесплатную пробную версию?
Как отобразить сообщение, когда пользователь нажимает кнопку воспроизведения в аудио теге?
Шаблон Gatsby для статей, защищенных firebase auth
Как заполнить раскрывающийся список с несколькими путями, используя javascript html
Почему в express.js нет ошибки, если переменная app используется в собственном определении?
Редактор TinyMCE не может выбрать, когда таблица td содержит тег span только в IE11. Не работает во всех версиях Tinymce
SVG теряет плавность формы, меняя свой цвет при нажатии
Как использовать формы для каждого <TR> в таблице? Требуется вставить несколько кнопок отправки в таблицу