타입스크립트에서 배열
은 배열을 저장할 수 있는 타입입니다. 자바스크립트와 동일하게 리터럴 방식으로 선언하며 배열의 요소 타입을 타입으로 명시해준다는 것이 특징입니다.
let numbers: number[] = [1, 2, 3];
let strings: string[] = ['apple', 'banana', 'melon'];
다차원 배열도 생성할 수 있습니다.
let numbers: number[][] = [[1, 2], [3, 4]];
위 방식 외에도 제네릭
이라는 방식으로도 배열을 선언할 수 있습니다.
let numbers: Array<number> = [1, 2, 3];
제네릭
은 함수나 클래스 등에서 다양한 가변 타입을 활용할 수 있도록 지원하는 기능인데요. 이 기능에 대해선 추후 따로 다루도록 하겠습니다.
하나의 타입을 명시하는 경우, 해당 배열에는 한 가지 타입이 올 수 있습니다. 하지만 자바스크립트가 다루는 배열은 다양한 타입들이 섞여있는 경우가 있는데요. 타입스크립트에서도 여러 타입을 가진 배열을 선언할 수 있는 기능을 지원하고 있습니다.
소괄호 ()
와 바 |
를 이용해서 여러 타입 배열을 선언할 수 있습니다.
let arr: (number | string)[] = [1, 'apple'];
위와같이 표기한 배열은 요소의 타입이 number, string
두 개가 올 수 있음을 의미합니다.
이런 방식을 유니온
이라고 부르는데, 이 역시도 추후에 따로 다룰 예정입니다.
튜플(tuple)
타입은 타입스크립트만의 타입으로 길이와 타입이 고정된 배열을 의미합니다.
배열과 비슷하지만 약간 다른데요. 다음과 같이 타입과 길이를 고정시킨 튜플을 선언합니다.
let tuple: [number, number, number] = [1, 2, 3];
위와 같이 선언하는 경우, 길이가 3이고 모든 요소의 타입이 number
인 튜플이 정의됩니다.
튜플
도 여러 타입을 갖도록 선언할 수 있습니다.
let tuple: [number, string] = [1, 'apple'];
추가적으로, 튜플을 tsc로 컴파일해서 나온 JS 파일을 보면 배열로 변환됩니다.
즉,
튜플 === 배열
입니다. 따라서 Array 내장 객체의 메소드/프로퍼티를 튜플에서도 이용할 수 있습니다.