타입 챌린지 27932 - MergeAll

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

타입챌린지

목록 보기
100/131

문제 링크

문제

가변 적인 수의 타입을 새로운 타입으로 병합하라. 만약 key가 중복된다면, 그 key의 value는 유니온 타입으로 병합되어야 한다.

Merge variadic number of types into a new type. If the keys overlap, its values should be merged into an union.

내 풀이

type MergeAll<XS extends any[]> = 
  XS extends [infer First,...infer Rest]?
    {
      [R in keyof First|keyof MergeAll<Rest>]:
        (R extends keyof First?First[R]:never)
        |(R extends keyof MergeAll<Rest>?MergeAll<Rest>[R]:never)
    }
  :{}

재귀적으로 문제를 접근했다.

배열의 나머지 요소에 재귀적으로 적용한 타입(MergeAll)과 First를 merge하는 방식으로 구현을 하였다.

Merge를 하는 방법은 이전에 했던 merge와 같다.

0개의 댓글