다만 이 방식은 단점도 있습니다. 다음과 같이 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: '이게 되네?' };
{} 타입은 객체를 의미하는 것이 아니라 null과 undefined를 제외한 모든 값을 의미하는 만큼, 의도가 달라져 버립니다.