
이 챌린지의 목표는 TypeScript에 존재하는 유틸리티 타입인 Pick 타입을 자체적으로 사용하지 않고 새로 구현하는 것을 목표로한다.
T에서 K 프로퍼티를 추출한 새로운 타입을 만드는 것이 목표이다.
다음과 같은 코드가 있다.
interface Todo{
title: string,
description: string,
complate : boolean
}
type TodoPreview = MyPick<Todo,'title'|'complate'>
위 인터페이스에서 title과 complate만을 선택해 새로운 속성의 합집합을 취하는 새로운 타입을 만들어야 한다.
기본으로 제공되는 코드는 아래와 같다.
type MyPick<T,K> = //
K는 T에 프로퍼티를 가지는 새로운 타입이어야하고 K는 T에 포함되어있어야 하는 유니온 타입이어야 한다.
type MyPick<T, K extends T> ={
[Propery in K] : T[Property]
}
이렇게 하면 K가 유니온이지만 T에 포함되어있지 않은 프로퍼티를 포함하면 컴파일러 오류가 발생한다.