더북(TheBook)

마지막으로 모든 속성의 타입이 동일한 객체의 타입인 Record를 타이핑해보겠습니다.

type MyRecord<K extends keyof any, T> = {
  [P in K]: T;
};

type Result = MyRecord<'a' | 'b', string>;
/*
type Result = {
  a: string;
  b: string;
}
*/

K extends keyof any를 통해 Kstring | number | symbol로 제약을 걸었습니다. 제약은 가능하면 엄격하게 거는 것이 좋습니다. 속성 이름으로 사용할 수 없는 값을 K로 제공하는 실수를 막을 수 있기 때문입니다.

다음 절에서는 컨디셔널 타입을 활용하는 Utility Types를 살펴보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.