1.38.0merge
Creates a new object by shallowly merging the properties of an object and a source object, with source properties overriding existing properties.
merge(object, source):Omit<T, keyof U> & UHow it works
The function uses object spread syntax to create a new object. Properties from object are copied first, followed by properties from source.
Property precedence
When both objects contain the same key, the value from source replaces the value from object because source is spread afterward.
Shallow merge
The merge is shallow. Nested objects and arrays are not recursively merged or cloned; their references are copied.
Parameters
objectTrequiredThe base object to merge into.
sourceUrequiredThe object whose properties are added to or used to override the base object.
Returns
Omit<T, keyof U> & UA new shallowly merged object containing properties from both objects, with source properties taking precedence over object properties.
Examples
Basic usage
const object = {
name: "Amir",
age: 22,
};
const source = {
role: "developer",
};
merge(object, source);
// {
// name: "Amir",
// age: 22,
// role: "developer",
// }Source overrides existing properties
const object = {
name: "Amir",
age: 22,
};
const source = {
age: 25,
};
merge(object, source);
// {
// name: "Amir",
// age: 25,
// }Adding new properties
const object = {
name: "Amir",
};
const source = {
age: 22,
role: "developer",
};
merge(object, source);
// {
// name: "Amir",
// age: 22,
// role: "developer",
// }Nested objects are not deeply merged
const object = {
user: {
name: "Amir",
age: 22,
},
};
const source = {
user: {
role: "developer",
},
};
merge(object, source);
// {
// user: {
// role: "developer",
// },
// }Empty objects
merge({}, {
name: "Amir",
});
// {
// name: "Amir",
// }
merge({
name: "Amir",
}, {});
// {
// name: "Amir",
// }Original objects are unchanged
const object = {
name: "Amir",
};
const source = {
age: 22,
};
const result = merge(object, source);
console.log(object);
// {
// name: "Amir",
// }
console.log(source);
// {
// age: 22,
// }Falsy values are preserved
const object = {
active: true,
count: 10,
};
const source = {
active: false,
count: 0,
};
merge(object, source);
// {
// active: false,
// count: 0,
// }