1. ホーム
  2. typescript

[解決済み] TypeScriptで固定長の配列を宣言する方法

2022-04-21 21:38:45

質問

TypeScriptの型に関する私の知識のなさを示すかもしれませんが、次のような質問があります。

このように配列の型宣言をすると

position: Array<number>;

...これで、任意の長さの配列を作ることができます。しかし、特定の長さの数値、例えばx,y,zの成分が3であるような配列を作りたい場合、このような固定長の配列用の型は作れないのでしょうか?

position: Array<3>

何かお手伝いやご説明をお願いします。

解決方法は?

javascriptの配列には、配列の長さを受け取るコンストラクタがあります。

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

ただし、これはあくまで初期サイズであり、変更に制限はない。

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

タイプスクリプトは タプルの種類 で、特定の長さと型を持つ配列を定義することができます。

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]'