问题描述
我在ES6目标环境中运行以下类型的脚本代码,它表示汽车不是构造函数我已经遵循,并尝试将目标环境改为ES5。工作正常有人可以告诉为什么它不适用于目标ES6。
这是我的TypeScript代码:
export class Cars {
constructor(public len:number,public wid:number){}
}
export function getSize():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(汽车,汽车);
}
}
});
//#sourceMappingURL = Cars.js.map
(从复制我的信息)
这是TS 1.8.10中的一个错误,修正为主。
tsc -t es6 ./foo.ts -m系统
in 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(汽车,汽车);
}
}
});
所以 getSize
最终使用 var Cars
这是 undefined
。
在master中输出(1)
相反 Cars = class Cars {
所以分配给 var Cars
和 getSize()
的作品。
I am running the following typescript code in the ES6 target environment and it says that "Cars is not a constructor"
I have followed the link and tried changing the target environment to ES5. It is working fine. Can some one tell why it is not working for target ES6.
Here is my TypeScript code:
export class Cars {
constructor(public len: number,public wid: number) { }
}
export function getSize(): Cars {
return new Cars(20, 30);
};
Error is "Cars is not a constructor" in the function getSize.
By the way I am trying to load all the files with Systemjs.
By the way I am getting the error in the browser........ Not while compiling it...
Here is the compiled code of the above typescript....
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
(Copying my post from the GH issue you opened.)
This is a bug in TS 1.8.10 and fixed in master.
tsc -t es6 ./foo.ts -m system
in 1.8.10 gives:
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);
}
}
});
So getSize
ends up using the var Cars
which is undefined
.
In master the output for (1)
is instead Cars = class Cars {
so it assigns to the var Cars
and getSize()
works.
这篇关于Typescript错误“类不是构造函数”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!