TypeScript编译器生成的新版__extends

时间:2013-07-08 09:29:20

标签: typescript

使用继承时,TypeScript编译器会为您生成__extends函数。旧版本的tsc编译器生成类似这样的东西

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};

将b的实例设置为d的原型链。这几乎也是我想要的。

最新版本(0.9)添加了属性/方法引用的复制,这些引用看起来很棒我:

var __extends = this.__extends || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};

有谁知道这个的原因?

1 个答案:

答案 0 :(得分:4)

它现在也尊重类的静态属性。

关键陈述是:

for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];

将父类静态成员复制到子类。

例如:

class Foo{
    static x = "asdf";
}

class Bar extends Foo{

}

alert(Bar.x);

Try it

原始(现已关闭)错误报告:http://typescript.codeplex.com/workitem/825