feat: 初始化提交
笑笑 authored at 2025-05-13 21:25:06
804.00 B
cube-front
/**
 * 深度合并对象
 * @param target 目标对象
 * @param source 源对象
 * @returns 合并后的对象
 */
export function deepMerge<T extends object = object>(target: T, source: any): T {
  const result = { ...target };

  if (isObject(target) && isObject(source)) {
    for (const key in source) {
      if (isObject(source[key])) {
        if (!result[key]) {
          Object.assign(result, { [key]: {} });
        }
        result[key] = deepMerge(result[key], source[key]);
      } else {
        Object.assign(result, { [key]: source[key] });
      }
    }
  }

  return result;
}

/**
 * 判断是否为对象
 * @param item 待检查项
 * @returns 是否为对象
 */
export function isObject(item: any): boolean {
  return item && typeof item === 'object' && !Array.isArray(item);
}