Я разрабатываю библиотеку с именем 'vee-type-safe'
для проверки типов во время выполнения. Все работало прекрасно, пока я не добавил подкаталог /express
и файл /express/index.ts
, куда я экспортировал некоторые фабрики проверки типа промежуточного программного обеспечения ExpressJS
.
Итак, у меня есть следующая структура:
vee-type-safe
|- build
|- package.json
|- declarations
| |- is-iso-date.d.ts
|
|- tsconfig.json
|- index.ts // lightweight core library
|- express
|-index.ts // express middleware factories
В express/index.ts
файле я импортирую модуль ядра '../index.ts'
библиотеки.
В моем основном модуле у меня есть следующий импорт:
import isISODate = require('is-iso-date');
В пакете
'is-iso-date'
нет наборов, поэтому я создал каталог declarations
с is-iso-date.d.ts
, который так прост:
declare module 'is-iso-date' {
function isISODate(suspect: string): boolean;
export = isISODate;
}
Я добавил "typeRoots": [ ..., "declarations"]
к tsconfig.json
Я добавил "types": "build/index.d.ts"
к package.json
Когда я запускаю tsc
в моем пакете, все компилируется без ошибок.
Но когда я устанавливаю свою библиотеку 'vee-type-safe'
в качестве зависимости от какого-либо проекта через npm и пытаюсь скомпилировать ее, я получаю следующую ошибку:
Could not find a declaration file for module 'is-iso-date'.
'/home/tegeran/projects/is-iso-date-issue/node_modules/is-iso-date/index.js'
implicitly has an 'any'type.
Try `npm install @types/is-iso-date` if it exists or add a new declaration (.d.ts)
file containing `declare module 'is-iso-date';`
1 import isISODate = require('is-iso-date');
Это происходит только при импорте субмодуля 'vee-type-safe/express'
. Когда я импортирую свой основной модуль 'vee-type-safe'
, ошибок не возникает. Что мне здесь не хватает?
Я создал репозиторий github с минимальным проектом, чтобы продемонстрировать эту ошибку