2017-08-24 17 views
1

私はMyClassという親クラスを持っています。親変数から子変数への子クラスのインスタンスの割り当て

export class MyChildFirst extends MyClass {...} 
export class MyChildSecond extends MyClass {...} 

MyClassの各インスタンスは、2つの子のうちの1つに属します。私はMyClassの配列を持っています。配列をループしていて、MyChildSecondに属するMyClassインスタンスをMyChildSecondの配列に割り当てる必要があります。コードのみMyChildSecondアレイに割り当てられることを確実にするにもかかわらず、それはMyClassのように「要素」を見ているので、その変数に割り当てることができないため

var bigArray = new Array<MyClass>(); 
// ... 
// populate that array 
// ... 
var smallArray = new Array<MyChildSecond>(); 
for (var element of bigArray) { 
    if (element.constructor.name === 'MyChildSecond') { 
     smallArray[smallArray.length] = element; 
    } 
} 

しかし、これは、動作しませんMyChildSecondを保持します。これをどのように実装できますか?

+0

あなたのコードは正常に見える、それがここに動作します:https://plnkr.co/edit/grZj8tMKfkQ5Nixzh7Q8?p=preview – Pengyy

+0

それは私の角のアプリケーションのコンテキスト内で作業していません。 –

答えて

0

instanceofをTypeScriptのクラスに使用できます。

var smallArray = bigArray.filter(
        (element)=>element instanceof MyChildSecond 
       ) as MyChildSecond[]; 
+0

これは、MyChildSecondのインスタンスであるbigArrayの要素のみを含むMyClassの配列を作成します。私は、MyChildSecondだけを含むMyClassの配列ではなく、MyChildSecondの配列の形でそれを必要とします。つまり、自分の目標であるMyChildSecondに固有の要素にアクセスすることはできません。 –

+0

@chodobagginsは私には聞こえません。私はタイプの問題を明確にするために私の答えを更新しました。 – cgTag

+0

空の配列を返す何らかの理由で、私は実際には困惑しています –

関連する問題