Record Type

김철준·2023년 11월 12일
0

TypeScript

목록 보기
3/3

Record<Key,Type>

Record 타입이란 객체 데이터의 타입을 지정할 때,사용한다.

  • Key : 객체의 키에 대한 타입을 지정
  • Type : 객체의 값에 대한 타입을 지정
// Record를 사용한 경우
const info:Record<string,string> = {
name :"jev",
email:"cjcjcjc@cjcjcjcj.com"
}

// interface를 사용한 경우

interface Iinfo {
name : stirng;
email: string;
}

const info : Iinfo = {
name :"jev",
email:"cjcjcjc@cjcjcjcj.com"
}

위의 예시에서 Record를 사용한 경우는 key값에 대한 제한 범위 string으로 제한 범위가 크다.

name과 email로만 key을 제한하려면 다음과 같이 사용할 수 있다.


type InfoKey = "name" | "email" | "age" |"marriage" | "job";

// Record를 사용한 경우
const info:Record<InfoKey,string | number | boolean> = {
name :"jev",
email:"cjcjcjc@cjcjcjcj.com"
age : 26,
marriage : false,
job:"developer"
}

// interface를 사용한 경우

interface Iinfo {
name : stirng;
email: string;
age : number;
marriage:boolean;
job:string;
}

const info : Iinfo = {
name :"jev",
email:"cjcjcjc@cjcjcjcj.com"
age : 26,
marriage : false,
job:"developer"
}

프로젝트에서 객체에 많은 데이터를 가지고 있는 경우가 많은데, 보통 interface를 사용해서 데이터 타입을 지정하곤 했다.

하지만 Record를 사용해서도 사용하는 방법도 있을 것 같다.

Record를 사용할 경우, 타입 선언시 인터페이스보다 코드 길이가 짧아질 수 있긴 하지만 value 타입이 특정 타입 하나가 아닌 여러 개의 타입일 경우에는 타입 범위가 넓어져 좋은 쓰임새는 아닌 것 같다.

value 타입이 특정 타입으로 일정하고 key 값을 특정 값으로 특정값으로 제한하고 싶다면 key 타입만 유니온 타입이나 enum 타입으로 지정해주어 좋은 쓰임새가 될 수도 있을 것 같다.

profile
FE DEVELOPER

0개의 댓글