export type UnionStringKeys = U extends U ? { [K in keyof U]-?: U[K] extends string | undefined ? K : never; }[keyof U] : never; export type UnionRequiredKeys = U extends U ? { [K in UnionStringKeys]: ({} extends Pick ? never : K); }[UnionStringKeys] : never; export type UnionOptionalKeys = Exclude, UnionRequiredKeys>;