TIR: 타입스크립트 프로그래밍 | 타입의 모든것 (3) 튜플 - 220905

Lumpen·2022년 9월 5일
0

TIR

목록 보기
32/40

튜플

튜플은 배열의 서브타입
길이가 고정되어 있고, 타입이 알려진 배열의 일종
튜플은 선언 시에 타입을 명시해야만 한다

자바스크립트에서는 배열과 튜플에 같은 문법(대괄호)를 사용하지만
타입스크립트는 대괄호를 쓰는 문법을 모두 배열 타입으로 추론하기 때문이다

let a: [number] = [1]
let b: [string, number] = ['hi', 1]

튜플은 선택형 요소도 지원한다
객체와 마찬가지로 물음표를 사용한다

let c: [number, number?] = [1]
let d: ([number] | [number, number]) = [1]

c에서 두번째 요소에 선택형을 사용했기 때문에
c와 d의 타입은 같다

튜플이 최소 길이를 갖기 원할 때는 나머지 요소(...)를 사용할 수 있다

let e: [string, string, ...string[]] = ['a', 'b', 'c', 'd', 'e']

튜플은 이형 배열을 안전하게 관리할 뿐 아니라 배열 타입의 길이도 조절한다
잘 활용하면 순수 배열에 비해 안전성을 높일 수 있다

읽기 전용 배열과 튜플

일반 배열은 가변이지만 상황에 따라 불면인 배열이 필요할 수 있다
타입스크립트는 readonly 배열 타입을 지원하므로 불변 배열을 만들 수 있다

읽기 전용 배열은 일반 배열과 같지만 내용을 갱신할 수 없다는 점만 다르다
읽기 전용 배열을 갱신하려면 .push(), .splice() 등
배열을 직접 수정하는 동작 대신
.concat(), .slice() 등의 원본 배열을 수정하지 않는 메소드를 사용해야 한다

읽기 전용 배열은 변경이 불가하므로 코드를 쉽게 이해할 수 있지만
사용 시 원본 배열을 복사해야 하므로 프로그램의 성능이 느려질 수 있다

불변 배열을 자주 다뤄야한다면 immutable.js나 immer를 고려하는 것이 좋다

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글