interface Original {
      name: string;
      age: number;
      married: boolean;
    }
    type Copy = {
      [key in keyof Original]: Original[key];
    }
    
    /*
    type Copy = {
      name: string;
      age: number;
      married: boolean;
    }
    */
    

    in 연산자 오른쪽에는 유니언 타입이 와야 하므로 keyof 연산자를 사용해 Original의 속성 이름만 추렸습니다('name' | 'age' | 'married'). 속성 값의 타입은 인덱스 접근 타입을 사용해서 원래 객체의 타입을 가져옵니다. 여기서도 유니언 타입에 속한 타입들이 하나씩 순서대로 평가됩니다. 먼저 'name': Original['name']에서 'name': string이 속성이 되고, 'age': Original['age']에서 'age': number가 속성이 됩니다. 마지막으로 'married': Original['married']에서 married: boolean이 속성이 됩니다.

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