Можно ли добавить файл объявлений в нетипизированный пакет без регистрации в @types?

#typescript

#машинописный текст

Вопрос:

Я могу добавлять типы в импортируемый пакет, добавляя файл декларации в корневой каталог проекта, который выполняет импорт:

 index.d.ts  declare module "@org/client" {   export = client;   ... }  

Это работает. Но мне нужно будет сделать это во всех проектах, которые импортируют модуль.

Могу ли я каким-то образом поместить эту информацию в импортируемый пакет? Я попытался поместить index.d.ts их в импортированный пакет вместо импортируемого проекта, но типы не подбираются, когда я это делаю.

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

1. Я думаю, что вы должны определить lt;some-pathgt;/lt;some-namegt;.d.ts файл отдельно от каждого lt;some-pathgt;/lt;some-namegt;.js файла

2. @GuerricP спасибо, это было решение!

Ответ №1:

Является ли импортируемый вами пакет общедоступным пакетом, в котором отсутствуют типы? Если это так, то лучший подход-внести свой вклад в эти типы DefinitelyTyped , чтобы все сообщество могло извлечь из этого выгоду. Поскольку ваш вопрос сформулирован с упоминанием «без регистрации @types «, я не уверен, что вы явно НЕ хотите этого делать по какой-то причине? Если да, то почему?

Если у вас есть несколько проектов, использующих модуль, в котором отсутствуют типы, и вам нужны эти типы во всех местах — и по какой — то причине вы не хотите добавлять типы-единственные другие способы, которые я могу придумать, которые не включают вставку одного и того же объявления типа в каждый отдельный проект, — это 1) сделать запрос на извлечение в библиотеку, чтобы добавить типы изначально в нее или 2) разветвить библиотеку и добавить необходимые файлы .d.ts непосредственно в нее. Каждый из этих подходов также требует, чтобы вы указывали "types" директиву на package.json соответствующий .d.ts файл(ы).

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

1. Это частный пакет

2. Тогда почему бы просто не добавить типы непосредственно в него?