typescripttypesfixed-length-array

How to declare a Fixed length Array in TypeScript


At the risk of demonstrating my lack of knowledge surrounding TypeScript types - I have the following question.

When you make a type declaration for an array like this...

position: Array<number>;

...it will let you make an array with arbitrary length. However, if you want an array containing numbers with a specific length i.e. 3 for x,y,z components can you make a type with for a fixed length array, something like this?

position: Array<3>

Any help or clarification appreciated!


Solution

  • The JavaScript array has a constructor that accepts the length of the array:

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

    However, this is just the initial size, there's no restriction on changing that:

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

    TypeScript has tuple types which let you define an array with a specific length and 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]'