튜플은 자바스크립트 배열과 유사하면서 다른 타입스크립트의 데이터 타입이다.
배열을 확장한 기능이다. 즉 배열이 가지고 있는 기능을 튜플에서 다 가지고 있다.
배열과 다른 점은 제약사항을 부여할 수 있는 점이다.
const address: [number, string, string] = [18023, '화성시', '동탄'];
let [zipcode, address1] = address;
//zipcode = '12345'; // ERROR: zipcode
type BookInfo = [string, string, number];
const BookData: BookInfo[] = [
['개미', '베르나르', 1991],
['개미', '베르나르', 1991],
];
BookData.push(['신', '베르나르 베르베르', 2000]);
function getArrayOne(): any[] {
return [18023, '화성시', '동탄'];
}
type Address = [number, string, string];
function getArrayTwo(): Address {
return [18023, '화성시', '동탄'];
}
let address2 = getArrayTwo()[2];
//address2 = 12;
배열은 원소의 개수를 제약하지 않지만 튜플은 원소의 수를 제약할 수 있다.
const address: [number, string, string] = [18023, '화성시', '동탄'];
[number, string, string]으로 제약을 걸어두었기 때문에 첫번째는 number, 두번째는 string, 세번째는 string 데이터 타입이 들어가야한다.
let [zipcode, address1] = address;
구조 분해 할당을 통해 address에서 첫번째 값을 zipcode에 두번째 값은 address1에 부여할 수 있다. zipcode는 18023이라는 number타입을 가져온다. 하지만
zipcode = '12345'; // ERROR: zipcode
이와 같이 number 타입에 string 타입을 넣게 되면 오류가 발생한다.
튜플은 배열 속의 타입 체크가 가능한 점이 가장 큰 장점인 것 같다.