1
は、私は、共通の祖先を持ついくつかのクラス、静的配列のプロパティを持つ各があります。TypeScriptで静的配列プロパティをスーパークラスに移動するにはどうすればよいですか?
class Foo extends Base {
static ary = [];
}
class Bar extends Base {
static ary = [];
}
をそしてary
の変更はBase
内から完全に処理されているので、私はまたBase
に配列定義を移動したいと思います。
しかし、私は私のコードを変更する場合:その後、
class Base {
static ary = [];
}
class Foo extends Base {
}
class Bar extends Base {
}
Base
、Foo
とBar
は明らかに同じ配列インスタンスを共有します。
ary
を、各サブクラスが独自のインスタンスを参照して独自のプロパティを持つように定義する方法を教えてください。
私の現在の回避策は、次のようになります。
class Base {
private static _ary: Array<any>;
static get ary(): Array<any> {
if (!this.hasOwnProperty('_ary')) {
this._ary = [];
}
return this._ary;
}
}
class Foo extends Base {
}
class Bar extends Base {
}
Foo.ary.push(1, 2, 3);
Bar.ary.push(4, 5, 6);
Foo.ary; // [1, 2, 3]
Bar.ary; // [4, 5, 6]
が、(a)は、それが私有財産_ary
を含み、(b)はary
ゲッターがごとに呼び出されるためには、かなり面倒に感じています時間ary
にアクセスしましたが、そのコードを実行する必要がありますが、は1回、サブクラスごとにです。しかし、あなたはary
を受け入れる場合、代わりの方法であることを - - あなたが指定したとおりに
おかげで、私はすでに回避策に類似を持っている(私が更新しました私の質問)。配列/メソッドがアクセスされるたびに毎回その論理を実行する方法はありますか? – Stefan