Проблема с описанием типов для существующего пакета

Проблема с описанием типов для существующего пакета

Хочу потренироваться в написании типов для существующего пакета 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 шт):

Автор решения: Alexey Ten

Сейчас у вас объявлено, что в модуле debug есть функция createDebug. А на самом деле вам нужно объявить, что сам модуль и является этой функцией. Вот так:

declare module 'debug' {
    export default function createDebug(namespace: string): unknown;
}

после чего вы получите ошибку от компилятора на строчке debug('start').

→ Ссылка