Проблема с описанием типов для существующего пакета
Проблема с описанием типов для существующего пакета
Хочу потренироваться в написании типов для существующего пакета JS
Для примера взял пакет debug без типов
репозитарий с необходимыми файлами:
https://github.com/Ulibka68/pk2
Сам код состоит из трех строк:
import createDebug from 'debug';
export const debug = createDebug('node-kraken-ws')
debug('start');
Дополнительно в директории types создал поддиректорию debug в которую положил файл index.d.ts:
declare module 'debug' {
export function createDebug(a:string) : unknown;
}
В tsconfig добавил:
"typeRoots": ["./node_modules/@types", "./types"],
Такой код дает ошибку:
cli.ts:1:22 - error TS2349: This expression is not callable.
Type 'typeof import("debug")' has no call signatures.
Получается что tsc почему то не подхватывает описания типов, хотя я вроде бы все правильно сделал. Секцию "types" - которая ограничивает перечень импортируемых типов я убрал
проблема конечно решается импортом типов командой:
npm i -D @types/debug
Но Я хочу попробовать написать определения типов самостоятельно.
Почему у меня это не получается ?
Ответы (1 шт):
Сейчас у вас объявлено, что в модуле debug есть функция createDebug. А на самом деле вам нужно объявить, что сам модуль и является этой функцией. Вот так:
declare module 'debug' {
export default function createDebug(namespace: string): unknown;
}
после чего вы получите ошибку от компилятора на строчке debug('start').