[英]Typescript error “class is not a constructor”
我在ES6目標環境中運行以下打字稿代碼,它說“汽車不是構造函數”
我已經按照鏈接嘗試將目標環境更改為ES5。 它工作正常。 有人可以說明為什么它不適用於目標ES6。
這是我的TypeScript代碼:
export class Cars {
constructor(public len: number,public wid: number) { }
}
export function getSize(): Cars {
return new Cars(20, 30);
};
函數getSize中的錯誤是“汽車不是構造函數”。
順便說一下,我試圖用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
我不確定,但我認為這取決於TypeScript版本。
請嘗試聲明這樣:
class Cars {
constructor(public len: number,public wid: number) { }
}
export function getSize(): Cars {
return new Cars(20, 30);
};
export { Cars };
這是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()
工作。
確保您在同一目錄中沒有.js
和.ts
文件。 這可能是由IDE引起的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.