devtypes
    Preparing search index...

    Type Alias DeepMerge<Left, Right>

    DeepMerge: {
        [K in keyof Left | keyof Right]: K extends keyof Right
            ? K extends keyof Left
                ? Left[K] extends object
                    ? Right[K] extends object ? DeepMerge<Left[K], Right[K]> : Right[K]
                    : Right[K]
                : Right[K]
            : K extends keyof Left ? Left[K] : never
    } & {}

    Deep merge two object types; right-hand fields override left-hand ones recursively

    Type Parameters

    • Left
    • Right
    type A = { a: { x: number; y: string }; b: string };
    type B = { a: { y: number; z: boolean }; c: boolean };
    type Merged = DeepMerge<A, B>;
    // { a: { x: number; y: number; z: boolean }; b: string; c: boolean }