/** Given keys are required, rest are unchanged (inverse of PartiallyOptional) */ export type PartiallyRequired = Omit & Required> /** Given keys are optional, rest are unchanged (inverse of PartiallyRequired) */ export type PartiallyPartial = Omit & Partial> /** Given keys are required, rest are optional (inverse of OnlyOptional) */ export type OnlyRequire = Required> & Partial> /** Given keys are optional, rest are required (inverse of OnlyRequire) */ export type OnlyOptional = Partial> & Required> /** All fields are required deeply */ export type DeeplyRequired = T extends { [key: string | number | symbol]: any } ? { [K in keyof Required]: DeeplyRequired } : T /** All fields are optional deeply */ export type DeeplyPartial = T extends { [key: string | number | symbol]: any } ? { [K in keyof T]?: DeeplyPartial } : T