2

継承を使用すると、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 __();
};

誰かがこれの理由を知っていますか?

4

1 に答える 1

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

于 2013-07-08T09:58:30.547 に答える