Typescript错误“类不是构造函数”
我在ES6目标环境中运行以下打印代码,它说“汽车不是构造函数”
我已经遵循链接并尝试将目标环境更改为ES5。 它工作正常。 有人可以说明为什么它不适用于目标ES6。
这是我的TypeScript代码:
export class Cars {
constructor(public len: number,public wid: number) { }
}
export function getSize(): Cars {
return new Cars(20, 30);
};
在getSize函数中错误是“Cars不是构造函数”。
顺便说一下,我试图用Systemjs加载所有文件。
顺便说一句,我在浏览器中得到错误........不在编译它时...
这里是上述打字稿的编译代码....
System.register([], function(exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var Cars;
function getSize() {
return new Cars(20, 30);
}
exports_1("getSize", getSize);
return {
setters:[],
execute: function() {
class Cars {
constructor(len, wid) {
this.len = len;
this.wid = wid;
}
}
;
exports_1("Cars", Cars);
}
}
});
//# sourceMappingURL=Cars.js.map
(从您打开的GH问题复制我的文章。)
这是TS 1.8.10中的一个错误,在master中修复。
tsc -t es6 ./foo.ts -m system
在1.8.10中给出:
System.register([], function(exports_1, context_1) {
"use strict";
var __moduleName = context_1 && context_1.id;
var Cars;
function getSize() {
return new Cars(20, 30);
}
exports_1("getSize", getSize);
return {
setters:[],
execute: function() {
class Cars { // (1)
constructor(len, wid) {
this.len = len;
this.wid = wid;
}
}
exports_1("Cars", Cars);
}
}
});
所以getSize
最终使用了undefined
的var Cars
。
在master中, (1)
的输出是Cars = class Cars {
所以它赋值给var Cars
和getSize()
。
我不确定,但我认为这取决于TypeScript版本。
请尝试声明如下:
class Cars {
constructor(public len: number,public wid: number) { }
}
export function getSize(): Cars {
return new Cars(20, 30);
};
export { Cars };
确保你没有.js
和.ts
文件在同一个目录下。 这可能是由您的IDE有时造成的。
上一篇: Typescript error "class is not a constructor"
下一篇: How to correctly link opencv3 under ROS Indigo (using CMake)?