두 개의 타입 인수 T와 K를 사용하는 PartialByKeys<T, K>를 구성하세요.
K는 옵셔널하며 T의 프로퍼티로 이루어진 유니언 타입을 지정할 수 있습니다. K를 제공하지 않는다면 Partial<T>와 같이 모든 프로퍼티를 옵셔널하게 만들어야 합니다.
type PartialByKeyByAnd<T,K extends keyof T>= Omit<T,K>&Partial<Pick<T,K>>
type PartialByKeysImplement<T, K extends keyof T= keyof T,Merged=PartialByKeyByAnd<T,K>>={[R in keyof Merged]:Merged[R]}
type PartialByKeys<T, K extends keyof T= keyof T> = PartialByKeysImplement<T,K>
내 생각에는 PartialByKeyByAnd만 구해도 된다.
그러나 Equal의 부조리함 때문에 PartialByKeys처럼 구현했다.
PartialByKeysImplement를 구현한 이유는 Merged를 여러번 구하는 경우가 생길 것 같다는 생각에 추가 구현했다.
추후 Equal의 부조리함에 대해 이야기 해보아야겠다.
대부분의 경우 내 풀이와 접근 방식이 비슷했다.