타입 챌린지 59 - Get Optional

소파의 벨로그·2025년 6월 21일

타입챌린지

목록 보기
119/131

문제 링크

문제

모든 옵셔널 필드를 남기는 상급 유틸 타입 GetOptional<T>를 구현하라.

Implement the advanced util type GetOptional<T>, which remains all the optional fields

내 풀이

type OptionalKey<T,K = keyof T>=
  K extends keyof T?
    Pick<T,K> extends Required<Pick<T,K>>?never:K
  :never

type GetOptional<T> = {[R in OptionalKey<T>]?:T[R]}

Get Required 풀이와 비슷하다

옵셔널한 키를 뽑은 뒤, 그 키에 해당하는 값을 mapped type으로 분해해서 구현한다.

0개의 댓글