Skip to main content
Deno 2 is finally here 🎉️
Learn more
Go to Latest
The Standard Library has been moved to JSR. See the blog post for details.
function deepMerge
import { deepMerge } from "https://deno.land/std@0.147.0/collections/deep_merge.ts";

Merges the two given Records, recursively merging any nested Records with the second collection overriding the first in case of conflict

For arrays, maps and sets, a merging strategy can be specified to either "replace" values, or "merge" them instead. Use "includeNonEnumerable" option to include non enumerable properties too.

Example:

import { deepMerge } from "https://deno.land/std@0.147.0/collections/deep_merge.ts";
import { assertEquals } from "https://deno.land/std@0.147.0/testing/asserts.ts";

const a = {foo: true}
const b = {foo: {bar: true}}

assertEquals(deepMerge(a, b), {foo: {bar: true}});

Type Parameters

T extends Record<PropertyKey, unknown>

Parameters

record: Partial<Readonly<T>>
other: Partial<Readonly<T>>
optional
options: Readonly<DeepMergeOptions>

Type Parameters

T extends Record<PropertyKey, unknown>
U extends Record<PropertyKey, unknown>
Options extends DeepMergeOptions

Parameters

record: Readonly<T>
other: Readonly<U>
optional
options: Readonly<Options>

Type Parameters

T extends Record<PropertyKey, unknown>
U extends Record<PropertyKey, unknown>
optional
Options extends DeepMergeOptions = { arrays: "merge"; sets: "merge"; maps: "merge"; }

Parameters

record: Readonly<T>
other: Readonly<U>
optional
options: Readonly<Options>