以下是TS类。
class TestA {
name: string;
constructor(name:string){
this.name = name;
}
getName(): string {
return this.name;
}
getCName(): string {
return TestA.prototype.constructor.name;
}
}
let ta = new TestA('ta');
以下是已编译的JS
var TestA = (function () {
function TestA(name) {
this.name = name;
}
TestA.prototype.getName = function () {
return this.name;
};
TestA.prototype.getCName = function () {
return TestA.prototype.constructor.name;
};
return TestA;
}());
var ta = new TestA('ta');
//# sourceMappingURL=TestA.js.map
问题:1: 可以看出,TestA原型上没有设置构造函数属性。在我的应用程序中,我需要它。我正在使用继承,并且知道对象的类型是至关重要的,因为我正在将类对象转换为JSON和从JSON转换。你能否建议我对TS编译器进行任何调整,以便做到这一点。
否则我将不得不为我创建的每个类手动设置它。
问题2:
在生成的JS中,所有函数都是匿名的。有没有办法让他们的名字像。这在调试期间也非常有用。任何人都可以建议我这样做。
感谢您阅读并对该帖子感兴趣。 -Manish
答案 0 :(得分:1)
ES5中的构造函数是函数:
function TestA(name) {
this.name = name;
}
在ES6中添加了constructor
关键字,因此在转换为ES5时未使用该关键字。
答案 1 :(得分:0)
JavaScript会自动为函数提供prototype.constructor
属性...由于Typescript不会完全替换prototype
字段will still be there:< / p>
constructor