두 개의 타입을 새로운 타입으로 병합하세요. 두번째 타입의 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