UNPKG

@modern-kit/utils

Version:
24 lines (22 loc) 1.19 kB
/** * @description `source` 객체의 속성들을 재귀적으로 `target` 객체에 병합합니다. * 배열과 일반 객체는 재귀적으로 병합되며, 배열 혹은 일반 객체가 아닌 `source`의 값들은 `target`에 값이 존재하면 덮어쓰고, 존재하지 않으면 추가됩니다. * * @template T - 병합할 대상 객체의 타입. * @template S - 병합할 소스 객체의 타입. * @param {T} target - `source`의 속성을 병합할 대상 객체. * @param {S} source - 병합될 속성을 가진 소스 객체. * @returns {T & S} - 병합된 대상 객체와 소스 객체의 모든 속성을 포함하는 새로운 객체. * * @example * const target = { a: { x: 1, y: 2 }, b: 2 }; * const source = { a: { y: 3, z: 4 }, c: 5 }; * merge(target, source); // { a: { x: 1, y: 3, z: 4 }, b: 2, c: 5 } * * @example * const target = { a: [1, { name: 'modern' }] }; * const source = { a: [3, { address: 'seoul' }] }; * merge(target, source); // { a: [3, { name: 'modern', address: 'seoul' }] } */ declare function merge<T extends Record<PropertyKey, any>, S extends Record<PropertyKey, any>>(target: T, source: S): T & S; export { merge };