[type-challengers] Pick type 구현하기

Changjun·2022년 12월 23일

타입챌린저

목록 보기
1/1
post-thumbnail

문제링크

이 챌린지의 목표는 TypeScript에 존재하는 유틸리티 타입인 Pick 타입을 자체적으로 사용하지 않고 새로 구현하는 것을 목표로한다.

T에서 K 프로퍼티를 추출한 새로운 타입을 만드는 것이 목표이다.

예제

다음과 같은 코드가 있다.

interface Todo{
 	title: string,
  	description: string,
  	complate : boolean
}

type TodoPreview = MyPick<Todo,'title'|'complate'>

위 인터페이스에서 titlecomplate만을 선택해 새로운 속성의 합집합을 취하는 새로운 타입을 만들어야 한다.

기본으로 제공되는 코드는 아래와 같다.

type MyPick<T,K> = // 

해결방법

KT에 프로퍼티를 가지는 새로운 타입이어야하고 KT에 포함되어있어야 하는 유니온 타입이어야 한다.

type MyPick<T, K extends T> ={
 [Propery in K] : T[Property] 
}

이렇게 하면 K가 유니온이지만 T에 포함되어있지 않은 프로퍼티를 포함하면 컴파일러 오류가 발생한다.

0개의 댓글