모든 옵셔널 필드를 남기는 상급 유틸 타입 GetOptional<T>를 구현하라.
Implement the advanced util type GetOptional<T>, which remains all the optional fields
type OptionalKey<T,K = keyof T>=
K extends keyof T?
Pick<T,K> extends Required<Pick<T,K>>?never:K
:never
type GetOptional<T> = {[R in OptionalKey<T>]?:T[R]}
Get Required 풀이와 비슷하다
옵셔널한 키를 뽑은 뒤, 그 키에 해당하는 값을 mapped type으로 분해해서 구현한다.