Я опубликовал две библиотеки Javascript на npm, и пользователи запросили определения типов TypeScript для обеих из них. Я сам не использую TypeScript и не планирую переписывать эти библиотеки на TypeScript, но я все же хотел бы добавить файлы определения типов хотя бы для лучшего завершения кода IntelliSense. Я ищу некоторые советы с этим.
Я начал с чтения документации проекта DefinitelyTyped и документации по публикация файла объявления для пакета npm. Оба источника утверждают, что публикация в организации @types на npm является предпочтительным подходом для проектов, написанных не на TypeScript.
Почему это предпочтительнее публикации определений типов вместе с самой библиотекой через поле types
в package.json
? Не вижу смысла вовлекать в это третье лицо. Кажется, что обновление определений типов и их версий в этом случае просто сложнее.
Цитаты из упомянутой выше документации (выделено мной)
Из Определенно Типизировано:
Если вы автор библиотеки и ваш пакет написан на TypeScript, включите автоматически сгенерированные файлы объявлений в свой пакет вместо публикации в Definitely Typed.
Из typescriptlang.org:
Теперь, когда вы создали файл объявления, следуя шагам этого руководства, пришло время опубликовать его в npm. Есть два основных способа опубликовать файлы объявлений в npm:
- в комплекте с вашим пакетом npm или
- публикация в организации @types на npm.
Если ваш пакет написан на TypeScript, предпочтение отдается первому подходу. Используйте флаг --declaration для создания файлов объявлений. Таким образом, ваши объявления и JavaScript всегда будут синхронизированы.
Если ваш пакет не написан на TypeScript, предпочтительным подходом является второй подход.
Оба как бы говорят:
if (isAuthor && lang === "typescript")
bundle();
else
publishOnDefinitelyTyped();