Skip to main content
zerotal

Documentation


Documentation / zerotal / index / deepMerge

Function: deepMerge()

deepMerge<T>(base, override): T

Defined in: packages/core/src/support/deepMerge.ts:99

Deep-merge override onto base. Used by config factories (AppConfig, CacheConfig, …) and BaseMiddleware.with() so user overrides change only the keys they specify — at any depth — leaving every other default in place.

Nested plain objects merge recursively; arrays, primitives, and class instances replace wholesale; undefined overrides are ignored; and the result is a fresh value that shares no mutable plain structure with base or override. See the file header for full semantics, including the array-replacement rule.

Type Parameters

T

T extends object

Parameters

base

T

override

Partial<T>

Returns

T

Examples

deepMerge(
  { cors: { origin: "*", credentials: false }, port: 3000 },
  { cors: { credentials: true } },
);
// → { cors: { origin: "*", credentials: true }, port: 3000 }
// Arrays replace — they are not concatenated:
deepMerge({ tags: ["a", "b"] }, { tags: ["c"] });
// → { tags: ["c"] }