반응형
Record 타입
TypeScript의 내장 Record 타입을 이용하면 무언가를 매핑하는 용도로 객체를 활용할 수 있습니다.
객체가 특정 키 집합을 정의하도록 강제하는 방법이 두 가지 있는데, 바로 Record 타입이 그 첫 번째 방법입니다.
Record를 이용해 한 주의 각 요일을 다음 요일로 매핑하도록 만들어보겠습니다.
Record를 이용하면 nextDay의 키와 값에 제한을 추가할 수 있습니다.
type DayOfTheWeek = 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri'
type Day = DayOfTheWeek | 'Sat' | 'Sun'
let nextDay: Record<DayOfTheWeek, Day> = {
Mon: 'Tue'
}
위의 코드를 작성하면 다음과 같은 유용한 에러 메시지가 바로 나타납니다.
'{ Mon: "Tue"; }' 형식에 'Record<DayOfTheWeek, Day>' 형식의 Tue, Wed, Thu, Fri 속성이 없습니다.ts(2739)
물론 객체에 DayOfTheWeek에서 빠진 내용을 추가하면 에러가 사라집니다.
Record는 일반 객체의 인덱스 시그니처에 비해 자유롭습니다.
일반 인덱스 시그니처에서는 객체 값의 타입은 제한할 수 있지만, 키는 반드시 일반 string, number, symbol이어야 합니다.
하지만 Record에서는 객체의 키 타입도 string과 number의 서브 타입으로 제한할 수 있습니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
컴패니언 객체 패턴(companion object pattern) (0) | 2023.01.20 |
---|---|
매핑된 타입(mapped type) (0) | 2023.01.20 |
객체 타입의 타입 연산자 - keyof 연산자 (0) | 2023.01.19 |
객체 타입의 타입 연산자 - 키인 연산자 (0) | 2023.01.19 |
철저 검사(Exhaustiveness Checking)라 불리는 종합성(Totality) (0) | 2023.01.19 |