exactMerge()function
Exact merge two unknown values.
exactMerge(_left: unknown, right: unknown): unknown
Immutably merge two values — objects, arrays, or primitives. All merge functions return the left reference unchanged when nothing actually changed, making them safe to use in memoised or reactive contexts.
Things to know:
mergeObject() treats an explicit undefined value in right as a deletion of that key from the merged result.exactMerge() simply returns right — the building block for shallow merges of object properties.left === right, the function returns immediately without allocating.import { shallowMerge } from "shelving/util";
// Objects: top-level props from right win.
shallowMerge({ a: 1, b: 2 }, { b: 99, c: 3 });
// { a: 1, b: 99, c: 3 }
// Arrays: unique items from right are appended.
shallowMerge(["a", "b"], ["b", "c"]);
// ["a", "b", "c"]
// No change → same reference returned.
const obj = { x: 1 };
shallowMerge(obj, {}) === obj; // trueimport { deepMerge } from "shelving/util";
deepMerge(
{ user: { name: "Alice", role: "viewer" } },
{ user: { role: "admin" } },
);
// { user: { name: "Alice", role: "admin" } }import { mergeObject, mergeArray } from "shelving/util";
// Use a custom recursor (e.g. deepMerge) for object merging.
mergeObject({ a: 1 }, { b: 2 }, deepMerge); // { a: 1, b: 2 }
// Merge two arrays (unique items only).
mergeArray([1, 2, 3], [3, 4, 5]); // [1, 2, 3, 4, 5]Exact merge two unknown values.
exactMerge(_left: unknown, right: unknown): unknown
Shallow merge two unknown values.
shallowMerge(left: L, right: R): L & R
shallowMerge(left: ImmutableArray<L>, right: ImmutableArray<R>): ImmutableArray<L | R>
shallowMerge(left: unknown, right: R): R
Deeply merge two unknown values.
deepMerge(left: L, right: R): L & R
deepMerge(left: ImmutableArray<L>, right: ImmutableArray<R>): ImmutableArray<L | R>
deepMerge(left: unknown, right: R): R
Merge two arrays.
mergeArray(left: ImmutableArray<L>, right: ImmutableArray<R> | ImmutableArray<L>): ImmutableArray<L | R>
Merge two data objects.
mergeObject(left: L, right: R, recursor?: MergeRecursor): L & R