export type RequiredOnly = { [K in keyof T as T[K] extends Required[K] ? K : never]: T[K]; }; export type RequiredProps = T & { [P in K]-?: T[P]; }; export type OnlyOptional = { [P in keyof T as undefined extends T[P] ? P : never]: T[P]; };