声明导出功能的JS依赖项的.d.ts文件

时间:2019-04-07 14:43:48

标签: node.js typescript

我在我的打字稿项目中使用依赖项(https://www.npmjs.com/package/is-class)。该依赖项没有@types定义,因此,直到现在,我一直在使用带有declare module 'is-class';的自定义.d.ts文件来使导入工作。但是,我想向此依赖项中添加类型。

is类基本上导出单个函数,该函数接收1个参数并返回布尔值。我一直试图将其添加到我的.d.ts文件中,但是到目前为止,我尝试过的所有操作都会引发一个或另一个错误,到目前为止,我的最佳猜测是:

declare module 'is-class' {
    function isClass(a: any): boolean;
    export = isClass;
}

在我的ts代码中:

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.,但我不确定实现此目的的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

我刚遇到类似的问题。

首先,我更新了tsconfig.json以包含几个新选项:

{
    "compilerOptions": {
        "allowSyntheticDefaultImports": true,
        "esModuleInterop": true,
    }
}

(这不是整个配置文件。我只是排除了以前已经存在的选项。)

我将导入行更改为以下内容:

import isClass from 'is-class';

声明文件基本上像您描述的那样:

declare module 'is-class' {
    function isClass(a: any): boolean;
    export = isClass;
}