타입 챌린지 599 - Merge

소파의 벨로그·2025년 3월 26일

타입챌린지

목록 보기
35/131

문제 링크

문제

두 개의 타입을 새로운 타입으로 병합하세요. 두번째 타입의 Key가 첫번째 타입을 덮어씁니다(재정의합니다)

내 풀이

type Merge<F, S> = {
  [R in keyof F|keyof S]:R extends keyof S?S[R]:R extends keyof F?F[R]:never 
}

mapped 타입에서 분기 처리를 통해 구현했다.

다른 사람의 풀이

type Merge<F, S, O = F & S> = { [K in keyof O]: K extends keyof S ? S[K] : O[K] }

이런 방식의 풀이법도 존재한다

유사 풀이

 type Merge<F, S> = Omit<F, keyof S> & S

같은 풀이도 사실은 문제의 풀이가 될 수 있다.
그러나, Equal 유틸리티 타입의 한계로 정답처리 되지 못했다.
추후에 이 부분을 탐구해보려고 한다

참고자료

https://github.com/type-challenges/type-challenges/issues/21681

0개의 댓글