在打印过程中,Typescript不会添加prototype.constructor

时间:2016-09-23 11:22:56

标签: typescript

以下是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

2 个答案:

答案 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