2017-09-25 9 views
1

重要な場合はTypescript〜2.4を使用しています。タイプキャストされた配列のforEachを使用する際のトラブル

私は{} | {}[] | string[]としてキャストされる変数を持っています。私はそれが配列であるときにチェックを行い、それを反復したい。

(<{}[] | string[]>data).forEach((val) => { 
    this.options.push(setupValue(val)); 
}); 

しかし、それは私が間違っていたところCannot invoke an expression whose type lacks a call signature.は、私が見ることができないと言う:私はforEachはその上で最高です考え出し。私はTypescriptや自分のロジックをどう使っているのか、これが問題なのかどうかは分かりません。

+1

興味深いことに、 '(<{}[]>データ).forEach'と'(データ).forEach'両方が細かいです。 – cartant

+0

これは、Typescriptのバグでしょうか?または、意図された動作のようですか? – RhoVisions

+1

私にはバグがありますが、詳細については他の人が知っているかもしれません。 – cartant

答えて

1

私はそれがこの問題だと思う:Can't call array methods on type (A[] | B[]) #18602

+0

ありがとうございます。どのように私はそれを逃したのか分からない(私はバグをチェックした)。彼らのどちらかに対処するつもりはないみたいです... – RhoVisions

1

あなたは空のオブジェクト({})または文字列の配列を持っています。あなたは、両方の配列に対処するために受け入れた場合、活字体のコンパイラは、あなたが書くことができます:

(<({} | string)[]>data).forEach(val => { 
    //... 
}); 
+0

これは私のタイピングの正確な表現ではありませんが、これはうまくいくと思われる回避策です。 – RhoVisions

関連する問題