type OptionalKeys = { [K in keyof T]-?: {} extends Pick ? K : never; }[keyof T]; type RequiredKeys = { [K in keyof T]-?: {} extends Pick ? never : K; }[keyof T]; export type MergePreservingOptional = { [K in RequiredKeys | RequiredKeys]: K extends keyof T ? K extends keyof U ? T[K] | U[K] : T[K] : K extends keyof U ? U[K] : never; } & { [K in OptionalKeys | OptionalKeys]?: K extends keyof T ? K extends keyof U ? T[K] | U[K] : T[K] : K extends keyof U ? U[K] : never; }; export {}; //# sourceMappingURL=type-utils.d.ts.map