모든 옵셔널 키를 유니온으로 뽑아내는 상급 유틸 타입 OptionalKeys<T>를 구현하라
Implement the advanced util type OptionalKeys<T>, which picks all the optional keys into a union.
type OptionalKeysImplement<T,K = keyof T>=
K extends keyof T?
Partial<Pick<T,K>> extends Pick<T,K>?K:never
:never
type OptionalKeys<T> = OptionalKeysImplement<T>
get optional 풀이와 비슷하다.
다만 다른 점은, 사용처에서 구현용 제네릭을 사용하지 못하게 하기 위해 구현과 실제 타입을 분리했다.