Typescript 为什么此自定义类型定义不能正确导出函数?

Typescript 为什么此自定义类型定义不能正确导出函数?,typescript,definitelytyped,Typescript,Definitelytyped,我的Typescript项目中有一个npm依赖项(electron is accelerator),它没有类型,既不是包的一部分,也不是DefiniteTyped的一部分。依赖项由一个模块组成,其中只有一个函数接受字符串并返回布尔值。我在src/@types/electron is accelerator中编写了一个类型定义,如中所述: 我试着这样执行这个函数: import { isAccelerator } from 'electron-is-accelerator'; console.l

我的Typescript项目中有一个npm依赖项(
electron is accelerator
),它没有类型,既不是包的一部分,也不是DefiniteTyped的一部分。依赖项由一个模块组成,其中只有一个函数接受字符串并返回布尔值。我在
src/@types/electron is accelerator
中编写了一个类型定义,如中所述:

我试着这样执行这个函数:

import { isAccelerator } from 'electron-is-accelerator';

console.log(isAccelerator("Alt+Space")); 
import isAccelerator = require("electron-is-accelerator")

isAccelerator("whatever")
但我得到以下运行时错误:

TypeError: electron_is_accelerator_1.isAccelerator is not a function
我怎样才能让它运行

My
tsconfig.json

{
    "compilerOptions": {
        "outDir": "./built",
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": true,
        "sourceMap": false
    },
    "include": [
        "src/**/*"
    ]
}
我上传了一个简单的演示示例,供任何想解决这个问题的人使用。

它使用CommonJS
模块。导出
语法导出函数:

module.exports = function (str) { ... };
module.exports
与上述示例中的ES模块
默认导出
语法和您的命名导出声明不同,因此TS必须表示这些导入/导出<代码>电子加速器可以通过以下声明键入:

declare module "electron-is-accelerator" {
  function isAccelerator(s: string): boolean;

  export = isAccelerator;
}
导入如下所示:

import { isAccelerator } from 'electron-is-accelerator';

console.log(isAccelerator("Alt+Space")); 
import isAccelerator = require("electron-is-accelerator")

isAccelerator("whatever")
如果启用,则可以将其写入ES默认导入:

import isAccelerator from "electron-is-accelerator"