CyrefJS
CCyrefJS
فا
Back to documentation
Object/Since 1.38.0

merge

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> & U

How 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

objectTrequired

The base object to merge into.

sourceUrequired

The object whose properties are added to or used to override the base object.

Returns

Omit<T, keyof U> & U

A new shallowly merged object containing properties from both objects, with source properties taking precedence over object properties.

Examples

01

Basic usage

TypeScript
const object = {
  name: "Amir",
  age: 22,
};

const source = {
  role: "developer",
};

merge(object, source);
// {
//   name: "Amir",
//   age: 22,
//   role: "developer",
// }
02

Source overrides existing properties

TypeScript
const object = {
  name: "Amir",
  age: 22,
};

const source = {
  age: 25,
};

merge(object, source);
// {
//   name: "Amir",
//   age: 25,
// }
03

Adding new properties

TypeScript
const object = {
  name: "Amir",
};

const source = {
  age: 22,
  role: "developer",
};

merge(object, source);
// {
//   name: "Amir",
//   age: 22,
//   role: "developer",
// }
04

Nested objects are not deeply merged

TypeScript
const object = {
  user: {
    name: "Amir",
    age: 22,
  },
};

const source = {
  user: {
    role: "developer",
  },
};

merge(object, source);
// {
//   user: {
//     role: "developer",
//   },
// }
05

Empty objects

TypeScript
merge({}, {
  name: "Amir",
});
// {
//   name: "Amir",
// }

merge({
  name: "Amir",
}, {});
// {
//   name: "Amir",
// }
06

Original objects are unchanged

TypeScript
const object = {
  name: "Amir",
};

const source = {
  age: 22,
};

const result = merge(object, source);

console.log(object);
// {
//   name: "Amir",
// }

console.log(source);
// {
//   age: 22,
// }
07

Falsy values are preserved

TypeScript
const object = {
  active: true,
  count: 10,
};

const source = {
  active: false,
  count: 0,
};

merge(object, source);
// {
//   active: false,
//   count: 0,
// }
Built with@cyref/js·Official documentation