以下内容生成有效的ES5,但会发出以下错误。我正在使用Typescript 1.7.5,我想我已经阅读了整个语言规范,我无法弄清楚为什么会产生这个错误。
error TS2349: Cannot invoke an expression whose type lacks a call signature.
a.js (带默认导出的ES5环境模块)
function myfunc() {
return "hello";
}
module.exports = myfunc;
a.d.ts
declare module "test" {
export default function (): string;
}
b.ts
import test = require("test");
const app = test();
b.js(生成的ES5):
var test = require("test");
var app = test()
答案 0 :(得分:7)
module.exports
在CommonJS模块中导出文字值,但export default
表示您正在导出default
属性,这不是您的JavaScript代码实际执行的操作。
在这种情况下,正确的导出语法只是export = myfunc
:
declare module "test" {
function myfunc(): string;
export = myfunc;
}