Typescript Array vs any[] 質問する

Typescript Array vs any[] 質問する

ArrayTypeScript では、との違いは何ですかany[]? Array は動的にサイズが決定される配列 (もちろんコンパイル時) を参照し、 はany[]引数として渡されコンパイラによって型推論される静的にサイズが決定される配列を参照しますか? 現在、次のような関数がある場合:

mergeArrays(arr1 : Array, arr2 : Array);

静的データを使用してこの関数を呼び出すと、TypeScript は型付き配列 ( type[]) を使用します。

mergeArrays([true, false],  [1, 2]);
//          bool[]          number[]

では、2 つの間にコンパイル時の違いはあるのでしょうか? いつ を使用しany[]、いつ を使用するのでしょうかArray? 場合によっては、 で変数を定義しますArray

var info:Array;

次のように設定すると、「[][] を配列に変換できません」などのエラーが表示されます。

info = [[], []];

ベストアンサー1

この質問に対する以前の回答は、しばらく前から古くなっています。

まず最初に、Array汎用パラメータが必要です。

var arr: Array<any>;

これは次と同等です:

var arr: any[];

Array<any>と はany[]同一であり、どちらも可変/動的サイズの配列を参照します。

Typescript 3.0 では、固定/静的なサイズの配列に似ていますが、実際にはそうではないタプルが導入されました。

説明させてください。

構文は次のようになります。

var arr: [any];
var arr: [any, any];
var arr: [any, any, any];
var arr: [string, number, string?, MyType];

Typescript は、その長さの配列と一致する型の値を割り当てるように強制します。
配列にインデックスを付けるときに、Typescript はそのインデックスの変数の型を認識します。

興味深いことに、TypeScript では、 のような関数を使用するか.push()、 に値を割り当てることによって、タプルのサイズを変更することを阻止できませんlength。したがって、誤って変更しないように注意する必要があります。

追加の要素に対して「rest」タイプを指定することもできます。

var arr: [any, any, ...any[]];
var arr: [string, number, string?, MyType, ...YourType[]];

その場合、タプルにさらに多くの項目を割り当てることができ、配列のサイズが変わる可能性があります。

注意: 通常の配列をタプルに割り当てることはできません。

残りの型のみを指定すると、通常の古い配列が取得されます。
次の 2 つの式は同等です。

var arr: [...any[]];
var arr: any[];

おすすめ記事