VDL Plugin SDK

merge

Import from @varavel/vdl-plugin-sdk/utils/objects.

function merge<T, S>(target, source): Merge<T, S>;

Merges the properties of the source object into the target object.

This function performs a deep merge, meaning nested objects and arrays are merged recursively. If a property in the source object is an array or an object and the corresponding property in the target object is also an array or object, they will be merged. If a property in the source object is undefined, it will not overwrite a defined property in the target object.

Note that this function mutates the target object.

Type Parameters

Type ParameterDescription
T extends Record<PropertyKey, any>Type of the target object.
S extends Record<PropertyKey, any>Type of the source object.

Parameters

ParameterTypeDescription
targetTThe target object into which the source object properties will be merged. This object is modified in place.
sourceSThe source object whose properties will be merged into the target object.

Returns

Merge<T, S>

The updated target object with properties from the source object merged in.

Examples

const target = { a: 1, b: { x: 1, y: 2 } };
const source = { b: { y: 3, z: 4 }, c: 5 };

const result = merge(target, source);
console.log(result);
// Output: { a: 1, b: { x: 1, y: 3, z: 4 }, c: 5 }
const target = { a: [1, 2], b: { x: 1 } };
const source = { a: [3], b: { y: 2 } };

const result = merge(target, source);
console.log(result);
// Output: { a: [3, 2], b: { x: 1, y: 2 } }
const target = { a: null };
const source = { a: [1, 2, 3] };

const result = merge(target, source);
console.log(result);
// Output: { a: [1, 2, 3] }