38

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

mergeArrays(arr1 : Array, arr2 : Array);

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

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

では、2つの間にコンパイル時の違いはありますか? いつ使用any[]し、いつ使用しますArrayか? Array..で var を定義することもあります。

var info:Array;

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

info = [[], []];
4

2 に答える 2

29

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

まず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 はそのインデックスの変数の型を認識します。

.push()のような関数を使用するか、に値を代入することによって、タイプスクリプトがタプルのサイズを変更するのを止めないことに注意するのは興味深いことですlength。したがって、偶然にそれをしないようにする必要があります。

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

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

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

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

残りのタイプのみを指定した場合は、通常の古い配列が取得されます。
次の 2 つの式は同等です。

var arr: [...any[]];
var arr: any[];
于 2019-07-04T01:29:39.987 に答える