Skip to content

对象深合并 ​

deepMerge(target, ...sources) 递归合并普通对象,并返回新对象,不修改输入值。数组、日期和其他值由后一个来源整体替换。

ts
import { deepMerge } from '@puresnake/snake-ui';

const config = deepMerge(
    { header: { locale: 'zh-CN' }, tags: ['base'] },
    { header: { token: 'abc' }, tags: ['custom'] }
);
// { header: { locale: 'zh-CN', token: 'abc' }, tags: ['custom'] }

该函数适合配置合并。需要按主键合并数组时,应在业务层明确实现数组策略。

API 与覆盖规则 ​

deepMerge<T>(target: T, ...sources: Partial<T>[]): T 从左到右合并来源,返回新对象,输入对象不变。只有前后两侧都是普通对象时才递归合并;数组、Date、Map 等由后一个来源整体替换为副本。

例如主题默认配置与页面配置可以合并;若要把数组按 id 合并,需在调用前明确业务规则。嵌套引用的复制规则见对象深拷贝。

为 uni-app 商城与 CMS 场景设计