타입 챌린지 29785 - Deep Omit

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

타입챌린지

목록 보기
104/131

문제 링크

문제

두 인자를 받는 유틸리티 타입 Omit처럼, DeepOmit을 구현하라

Implement a typeDeepOmit, Like Utility types Omit, A type takes two arguments.

내 풀이

type DeepOmit<T,K> =
  {
    [R in keyof T as R extends K?never:R]:
      K extends `${string}.${infer TargetKey}`?
      DeepOmit<T[R],TargetKey>
      :T[R]
  }

mapped type을 사용했다.
key는 K와 같지 않은 key만 사용한다.
K가 .을 포함한다면 . 뒤에 있는 값과 모든 T[R]에서 . 뒤에 있는 값을 DeepOmit한 값을 반환한다.
K가 .을 포함하지 않는다면 그냥 T[R]을 반환한다.

0개의 댓글