더북(TheBook)

다만 이 방식은 단점도 있습니다. 다음과 같이 K'd'인 경우에는 Result{} 타입이 되어버립니다.

type MyPick<T, K> = {
  [P in (K extends keyof T ? K : never)]: T[P];
};

type Result = MyPick<{ a: string, b: number, c: number }, 'd'>;
// type Result = {}
const result: Result = { a: '이게 되네?' };

{} 타입은 객체를 의미하는 것이 아니라 nullundefined를 제외한 모든 값을 의미하는 만큼, 의도가 달라져 버립니다.

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