마지막으로 모든 속성의 타입이 동일한 객체의 타입인 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를 살펴보겠습니다.

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