타입 챌린지 399 - Tuple Filter

소파의 벨로그·2025년 7월 5일

타입챌린지

목록 보기
128/131

문제 링크

문제

튜플 T에서 주어진 타입 F의 요소를 걸러내는 타입 FilterOut<T, F>를 구현하라

Implement a type FilterOut<T, F> that filters out items of the given type F from the tuple T.

내 풀이

type FilterOut<T extends any[], F> = 
  T extends [infer Head,...infer Rest]?
    [Head] extends [F]?FilterOut<Rest,F>
      :[Head,...FilterOut<Rest,F>]
  :[]

이 문제의 핵심은 Head에 never가 들어가는 경우이다. Head에 never가 들어가는 경우 분배법칙이 적용되지 않아 never가 분배되지 않는다. 그래서 Head와 F를 배열로 감싸서 확장되는지를 확인한다.

0개의 댓글