2016-12-14 80 views
14

TypeScript型を取り巻く知識が不足している可能性があるため、次の質問があります。TypeScript - 固定長配列<length>タイプ?

あなたは、このような配列の型宣言を作る...

position: Array<number>; 

...それはあなたが任意の長さの配列を作るようになります。しかし、特定の長さ、つまりx、y、zの3つの数値を含む配列が必要な場合は、固定長配列の型を作ることができますか?

position: Array<3> 

ご迷惑をおかけして申し訳ございません。

答えて

29

javascript配列は、配列の長さを受け入れるコンストラクタを有する。しかし、これは単に初期サイズ

let arr = new Array<number>(3); 
console.log(arr); // [undefined × 3] 

あり、それを変更するには制限がありません:

arr.push(5); 
console.log(arr); // [undefined × 3, 5] 

活字体ましたtuple typesを使用すると、特定の長さとタイプの配列を定義できます。

let arr: [number, number, number]; 

arr = [1, 2, 3]; // ok 
arr = [1, 2]; // Type '[number, number]' is not assignable to type '[number, number, number]' 
arr = [1, 2, "3"]; // Type '[number, number, string]' is not assignable to type '[number, number, number]' 
+0

Brilli ant answer - 完全に動作します – henryJack

+7

タプル型は初期サイズのみをチェックするので、初期化した後でも無制限に "number"を 'arr'にプッシュできます。 – benjaminz

+0

本当に、それは実行時にはまだjavascriptで、その時点では "何かが行きます"。少なくともtypescript transpilerはこれをソースコードで少なくとも強制します – henryJack

関連する問題