使用继承时,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 __();
};
有谁知道这个的原因?
答案 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);
原始(现已关闭)错误报告:http://typescript.codeplex.com/workitem/825