过滤可选字段
type A = { name : string , age : string , role? : string }
将类型A中的所有可选字段过滤掉形成新的类型。
代码
type A = { name: string, age: string, role?: string }
/**
过滤类型 T 中所有的可选字段
*/
type FilterOptional<T extends object> = Pick<T, Exclude<{ [K in keyof T]: T extends Record<K, T[K]> ? K : never }[keyof T], undefined>>