以下代码可以生成有效的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;
declare module "test" {
export default function (): string;
}
import test = require("test");
const app = test();
b.js(生成的ES5):
var test = require("test");
var app = test()
a
和b
。a
是一个没有预先存在的类型声明文件的 ES5 commonjs 模块。b
是使用a
的 TypeScript。此外,b.ts
中的require()
已从"./test"
更改为"test"
,因为它应该是一个外部环境模块的字符串文字。我很惊讶它能够使用"./test"
作为到test.js
的相对路径,但它确实可以工作。但这样做更好,因为这是 Typescript 规范中推荐的方式。 - drewlio