オブジェクトを配列型にキャストするコードがいくつかありました(コンパイルエラーなしでオブジェクトに配列関数を使用できました)。
var n = (result.data['value'] as []).map( (a)=>{
//..
});
しかし、ts2にアップグレードすると、次のようになります。
エラーTS1122:タプル型要素リストは空にできません。
これは実際には構文エラーであり、コンマまたは値を忘れたと主張しています。それで、このキャストを修正して正しく動作させるにはどうすればよいですか?
私は試した as [IMyType]
とそれは機能しましたが、私はarray.prototype
関数がここに...また、私はあなたが実際にそれを行う方法だとは思わない。
何らかの理由で、コンパイラはresult.data['value']
タプル であり、配列ではありません。
次のようにキャストできます。
result.data['value'] as any[]
配列であることをコンパイラに伝える必要があります、または:
result.data['value'] as Array<any>
配列にIMyType
型のアイテムのみがある場合は、次のようにします。
result.data['value'] as IMyType[]
ただし、配列にさまざまなタイプのアイテムが含まれている場合は、any[]
またはタプル、たとえば:
result.data['value'] as [IMyType, string, string]
いずれにせよ、コンパイルされたjsでは配列になりますが、タプルを使用すると、特定のタイプの固定長配列を定義できます。
配列にキャストしていません。
[string]
は、単一の要素string
を持つタプルです。
[string, string]
は、string
とstring
の2つの要素を持つタプルです。
[]
は、要素がゼロのタプルです。
文字列の配列の構文はstring[]
おそらく必要なのはresult.data['value'] as any[]
。
上記の前述のキャスト構文オプションの代わりに、次のこともできます。
var n = (<SampleType[]>result.data['value']).map((a) => {
//..
});