[TypeScript] Record 타입

D uuu·2024년 9월 4일
0

TypeScript

목록 보기
2/2

Record 유틸리티 타입은 특정 키와 그에 상응하는 타입을 매핑하여 새로운 타입을 생성하는 도구입니다.
특정 키가 있고 그 키에 대해 일관된 값 타입을 가지는 객체를 정의할때 유용합니다.

Record 기본 문법

Record 타입은 두 개의 제네릭 매개변수를 받습니다.

Record<Keys,Type>

Keys : 객체의 키를 나타냅니다. 여기에는 문자열 리터럴의 유니언 타입, string, number, symbol 과 같은 키 타입이 올 수 있습니다.
Type : 해당 키에 할당될 값의 타입을 나타냅니다.

Record 간단 예시

Record 타입은 인덱스 시그니처와 유사한 기능을 합니다.
하지만 Record 타입을 사용하면 키로 문자열 리터럴을 명확하게 지정할 수 있어 타입 안전성을 높일 수 있습니다.

// 인덱스 시그니처로 정의한 타입
type Price = {
   [product : string] : number
}

// Record 로 정의한 타입
type PriceRecord = Record<string, number>

const price : PriceRecord = {
	'가방' : 15000,
    '지갑' : 12000,
    '인형' : 5000
}

Record 타입이 인덱스 시그니처와 다른점이 있다면, 바로 key 로 문자열 리터럴을 사용할 수 있다는 점 입니다.

type Product = '가방' | '지갑' | '인형'

type Price = {
	[product : Product] : number
}

이렇게 작성하니 빨간줄이 그어지는데, 인덱스 시그니처 매개 변수 형식은 리터럴 유형이나 제네릭 형식일 수 없기 때문입니다.
이럴때 Record 를 사용하거나 아니면 맵드 타입을 사용해 해결이 가능합니다.

type Product = '가방' | '지갑' | '인형'


// 유니온 타입으로 생성
type PriceRecord = Record<Product, number>

// 맵드 타입으로 생성
type Price = {
	[product in Product] : number
}
profile
배우고 느낀 걸 기록하는 공간

0개의 댓글

관련 채용 정보