我在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。
package使用CommonJS module.exports
语法导出函数:
module.exports = function (str) { ... };
module.exports
与ES模块default export
的语法和上面示例中的命名的导出声明不同,因此TS具有export =
, import = require()
来表示这些导入/导出。可以使用以下声明键入export =
:
import = require()
导入看起来像这样:
electron-is-accelerator
如果启用declare module "electron-is-accelerator" {
function isAccelerator(s: string): boolean;
export = isAccelerator;
}
,则可以将其写为ES默认导入:
import isAccelerator = require("electron-is-accelerator")
isAccelerator("whatever")