Я использую зависимость (https://www.npmjs.com/package/is-класс) в своем проекте машинописного текста. У этой зависимости нет определения @types, поэтому до сих пор я работал с пользовательским файлом .d.ts с declare module 'is-class';
, чтобы импорт работал. Однако я хочу добавить типы к этой зависимости.
is-class в основном экспортирует одну функцию, которая получает 1 параметр и возвращает логическое значение. Я пытался добавить это в свой файл .d.ts, но все, что я пробовал до сих пор, вызывает ту или иную ошибку, мое лучшее предположение на данный момент:
declare module 'is-class' {
function isClass(a: any): boolean;
export = isClass;
}
В моем ТС-коде:
import * as isClass from 'is-class';
// ...
const foo = isClass(bar);
Это выдает сообщение: This module can only be referenced with ECMAScript imports/exports by turning on the 'esModuleInterop' flag and referencing its default export.
но я не уверен, как лучше всего это сделать.
Я только что столкнулся с похожей проблемой.
Сначала я обновил tsconfig.json, добавив пару новых опций:
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
}
}
(Это не весь файл конфигурации. Я просто исключил параметры, которые ранее уже присутствовали.)
Я изменил строку импорта примерно так:
import isClass from 'is-class';
И файл объявления выглядит в основном так, как вы описали:
declare module 'is-class' {
function isClass(a: any): boolean;
export = isClass;
}