为什么这个自定义类型定义不能正确地导出一个函数?

Why does this custom type definition not properly export a function?

我的 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 modules default export 语法和上面示例中的命名导出声明,因此 TS 有 export =, import = require() 来表达这些 imports/exports。 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"