我在Typescript项目中有一个npm依赖项(electron-is-accelerator
),它不带任何类型,既不是包的一部分,也不是DefinitelyTyped的一部分。依赖关系由一个模块组成,该模块只有一个函数接受一个字符串并返回一个布尔值。我在src/@types/electron-is-accelerator
中写了一个类型定义,如this article中所述:
declare module 'electron-is-accelerator' {
export function isAccelerator(s: string): boolean;
}
我试图这样执行此功能:
import { isAccelerator } from 'electron-is-accelerator';
console.log(isAccelerator("Alt+Space"));
但是出现以下运行时错误:
TypeError: electron_is_accelerator_1.isAccelerator is not a function
我如何运行它?
我的tsconfig.json
:
{
"compilerOptions": {
"outDir": "./built",
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"sourceMap": false
},
"include": [
"src/**/*"
]
}
我为想要解决该问题的任何人上传了一个最小的演示示例here。
答案 0 :(得分:1)
package使用CommonJS module.exports
语法导出函数:
module.exports = function (str) { ... };
module.exports
与ES模块default export
的语法和上面示例中的命名导出声明不同,因此TS具有export =
, import = require()
来表示这些导入/导出。可以使用以下声明键入electron-is-accelerator
:
declare module "electron-is-accelerator" {
function isAccelerator(s: string): boolean;
export = isAccelerator;
}
导入看起来像这样:
import isAccelerator = require("electron-is-accelerator")
isAccelerator("whatever")
如果启用了esModuleInterop
,则可以将其写为ES默认导入:
import isAccelerator from "electron-is-accelerator"