array[3]이 undefined인데도 toFixed 메서드를 붙일 수 있는 문제가 있었습니다. array가 number[]로 추론되면서 array[3]은 number로 추론되기 때문입니다. 이러한 문제는 바로 뒤에 배우는 튜플을 사용해서 해결할 수 있습니다.
자바스크립트에서는 배열에 아무 타입의 값이나 자유롭게 넣을 수 있었는데, 타입스크립트에서는 자유도가 제한되었습니다. 하지만 잘 생각해보면 배열에는 대부분 같은 타입의 값이 들어갑니다. 다른 타입의 값이 들어가는 경우에는 보통 배열의 길이가 짧거나 고정되어 있습니다.
각 요소 자리에 타입이 고정되어 있는 배열을 특별하게 튜플(tuple)이라고 부릅니다. 튜플은 다음과 같이 타이핑합니다.
const tuple: [number, boolean, string] = [1, false, 'hi'];
tuple[0] = 3;
tuple[2] = 5;
// Type 'number' is not assignable to type 'string'.
// Tuple type '[number, boolean, string]' of length '3' has no element at index '3'.
tuple[3] = 'no';
// Type '"no"' is not assignable to type 'undefined'.
tuple.push('yes');