Ответ 1
В массиве javascript есть конструктор, который принимает длину массива:
let arr = new Array<number>(3);
console.log(arr); // [undefined × 3]
Однако это только начальный размер, нет никаких ограничений на его изменение:
arr.push(5);
console.log(arr); // [undefined × 3, 5]
Typcript имеет типы кортежей, которые позволяют определить массив с определенной длиной и типами:
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]'