TypeScript에서는 배열을 type[] 또는 Array<type> 형식으로 요소의 타입을 지정하여 엄격하게 타입을 지정할 수 있습니다. 예:
let arr: number[] = [1, 2, 3];
튜플은 고정된 길이와 각 요소의 타입이 있는 배열입니다:
let tuple: [string, number] = ["age", 30];
주의사항:
push는 비록 금지되지 않지만, 결과는 보장된 타입을 넘어서게 됩니다.TypeScript에서 튜플이 가변 길이의 요소를 포함할 수 있는가, 그렇게 될 경우 타입 지정에 어떤 영향을 미칠 것인가?
답변: 네, 튜플은 ... 문법을 사용하여 나머지 요소를 포함할 수 있지만, 나머지 요소는 여전히 엄격한 타입 지정을 요구합니다:
let tuple: [string, ...number[]] = ["id", 10, 20, 30];
하지만 ... 이전의 요소는 반드시 지정되어야 하며, 나머지 배열의 타입은 단일해야 합니다.
사례
e-commerce 프로젝트에서 개발자는 push를 사용하여 튜플 [string, number]에 두 개 이상의 요소를 저장하려 했습니다. 컴파일 단계에서 오류는 발생하지 않았으나, 정확히 두 개의 요소를 기대하던 함수가 작동을 멈추어 주문 처리 시 오류가 발생했습니다.
사례
함수가 튜플 [string, number]을 반환했으나, 소비자는 문자열 배열을 기대했습니다. 타입 불일치는 추적하기 어려운 오류를 발생시켜, 잘못된 값이 프로덕션으로 출시되었습니다.
사례
JavaScript에서 TypeScript로 코드를 마이그레이션할 때 여러 다른 타입의 값을 반환하기 위해 배열을 튜플 대신 사용했습니다. 이는 엄격한 타입 지정을 위반하게 되어, 값의 순서와 타입에 의존하던 후속 코드에서 버그가 발생했습니다.