は私がのDataItemの配列であるいくつかのプロパティdataItemsで基本クラスを考えてみましょう取得:変数の型と、このタイプの新しいインスタンスを作成
export class BaseClass{
dataItems:DataItems[];
}
それから私は、BaseClassのとそのdataItemsを拡張するいくつかのクラスを持っていますプロパティがdataItemsを拡張するいくつかのクラスの配列です:
export class BetterClass extends BaseClass{
dataItems:BetterDataItems[];
}
export class BestClass extends BaseClass{
dataItems:BestDataItems[];
}
今私はdataItemsを作成し、配列に追加しますBaseClassの中にメソッドを追加します。これをすべてBaseClassで行うことは可能でしょうか?使用するクラスに応じて、BetterDataItemsまたはBestDataItemsのインスタンスを作成する必要があります。私は単に添加瞬間
:
dataItemType: typeof DataItem;
性BaseClassのおよびBaseClassのに延びる各クラスIは、適切なデータ項目の種類と、この変数を上書き:BetterClassで
:
dataItemType: typeof BetterDataItem = BetterDataItem;
ベストクラス:
dataItemType: typeof BestDataItem = BestDataItem;
そして、BaseClassの中で私はこれを実行します。
var dataItem = new this.dataItemType();
をこれが正常に動作しますが、私の質問はある - すべてでdataItemType
性を有する回避することが可能だろうか?タイプdataItems
の配列を見つけて新しいインスタンスを作成できますか?
ありがとうございます!
+1;完全性のために、 'BaseClass'に' instanceof'演算子を使うことができると思いますが、この場合は本当に反パターンです。 (http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf 4.13タイプアサーション) –
ありがとうございました。ですから、変数からクラスの型を取得してクラスを作成することはできないと思いますか?instanceofは各タイプのチェックが必要なので、実際には良い解決策ではありません。 – zeroin