import type { KeyOfUnion, OptionalKeys, TheSame } from '.'; export type Union = (KeyOfUnion extends infer K ? T extends unknown ? TheSame extends true ? T : ({ [V in K extends keyof T ? Exclude> : never]: T[V]; } & { [V in K extends keyof T ? OptionalKeys : never]?: T[V]; } & { [V in K extends keyof T ? never : K & PropertyKey]?: undefined; }) extends infer V ? { [K in keyof V]: V[K]; } : never : never : never);