#typescript #definitelytyped
#typescript #definitelytyped
Вопрос:
Я настроил частный реестр NPM, в котором размещена ветка общедоступного пакета (что разрешено лицензией пакета).
Исходный пакет имеет объявление типа, предоставленное замечательным проектом DefinitelyTyped.
В настоящее время в моем проекте, если я напишу:
import mypackage from '@private/mypackage'
Типы, предоставленные DefinitelyTyped ( @types/mypackage
), не будут применяться, и я получу сообщение об ошибке:
ошибка TS7016: не удалось найти файл объявления для модуля «@private / mypackage». ‘node_modules/@private/mypackage/index.js ‘неявно имеет тип ‘any’.
В моем проекте возможно ли повторно объявить типы исходных пакетов для вилки, чтобы приведенный выше пример работал?
Ответ №1:
Вы можете добавить файл объявления ( .d.ts
) для модуля:
declare module '@private/mypackage'
{
import m from 'mypackage';
export default m;
}
Комментарии:
1. Спасибо! Я пытался импортировать «@types / mypackage» вместо «mypackage»
2. Важное предостережение: в этом решении у меня должны быть
mypackage
@private/mypackage
установлены оба и, иначе я не смогу импортироватьmypackage
. Есть ли способ использовать объявления типов без необходимости устанавливать обе версии пакета?3. @GnxR: установка самого пакета не требуется, вам нужен только
@types
пакет. Если это не так, вы либо не использовали файл объявления, либо ваш инструмент сборки делает что-то неправильно. Используя толькоtsc
я могу скомпилировать это без установки самого пакета.