Appearance
题目
实现高级工具类型 GetOptional<T>,该类型保留所有可选属性
GetOptional<T>
例如
type I = GetOptional<{ foo: number; bar?: string }>; // expected to be { bar?: string }
解答
type GetOptional<T> = { [P in keyof T as T[P] extends Required<T>[P] ? never : P]: T[P]; };