/** * Given two types, recursively compare and merge them with the * following logic: * 1. If the two types are different, Winner wins. * 2. If either type is not a Record, Winner wins. * 3. If both types are Records, each property, in the set of * all keys from both, is compared using the same logic. A * superset Record is created. */ export type DeepMerge = Winner extends object ? Loser extends object ? ({ [K in keyof Loser as K extends keyof Winner ? never : K]: Loser[K]; } & { [K in keyof Winner as K]: K extends keyof Loser ? DeepMerge : Winner[K]; }) : Winner : Winner; /** * Recursively merge two values, if possible. * See {@link DeepMerge} for details on the logic. */ export declare const deepMerge: (loser: Loser, winner: Winner) => DeepMerge; //# sourceMappingURL=deep-merge.d.ts.map