web-dev-qa-db-fra.com

TypeScript - Longueur fixe Array <longueur> type?

Au risque de démontrer mon manque de connaissances sur les types TypeScript - j'ai la question suivante.

Lorsque vous faites une déclaration de type pour un tableau comme celui-ci ...

position: Array<number>;

... cela vous permettra de faire un tableau de longueur arbitraire. Toutefois, si vous voulez un tableau contenant des nombres d’une longueur spécifique, c’est-à-dire 3 pour les composants x, y, z, pouvez-vous créer un type avec un tableau de longueur fixe, quelque chose comme ceci?

position: Array<3>

Toute aide ou clarification appréciée!

59
henryJack

Le tableau javascript a un constructeur qui accepte la longueur du tableau:

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

Cependant, il ne s'agit que de la taille initiale, il n'y a aucune restriction pour changer cela:

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

TypeScript a Tuple types qui vous permettent de définir un tableau avec une longueur et des types spécifiques:

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]'
108
Nitzan Tomer