fix: deepMerge
parent
477a658645
commit
e960ac6419
|
@ -58,26 +58,26 @@ export function deepMerge<T extends object | null | undefined, U extends object
|
|||
if (!source) {
|
||||
return target as T & U
|
||||
}
|
||||
if (isArray(target) && isArray(source)) {
|
||||
switch (mergeArrays) {
|
||||
case 'union':
|
||||
return unionWith(target, source, isEqual) as T & U
|
||||
case 'intersection':
|
||||
return intersectionWith(target, source, isEqual) as T & U
|
||||
case 'concat':
|
||||
return target.concat(source) as T & U
|
||||
case 'replace':
|
||||
return source as T & U
|
||||
default:
|
||||
throw new Error(`Unknown merge array strategy: ${mergeArrays}`)
|
||||
return mergeWith({}, source, target, (sourceValue, targetValue) => {
|
||||
if (isArray(targetValue) && isArray(sourceValue)) {
|
||||
switch (mergeArrays) {
|
||||
case 'union':
|
||||
return unionWith(sourceValue, targetValue, isEqual)
|
||||
case 'intersection':
|
||||
return intersectionWith(sourceValue, targetValue, isEqual)
|
||||
case 'concat':
|
||||
return sourceValue.concat(targetValue)
|
||||
case 'replace':
|
||||
return targetValue
|
||||
default:
|
||||
throw new Error(`Unknown merge array strategy: ${mergeArrays as string}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isObject(target) && isObject(source)) {
|
||||
return mergeWith({}, target, source, (targetValue, sourceValue) => {
|
||||
return deepMerge(targetValue, sourceValue, mergeArrays)
|
||||
}) as T & U
|
||||
}
|
||||
return source as T & U
|
||||
if (isObject(targetValue) && isObject(sourceValue)) {
|
||||
return deepMerge(sourceValue, targetValue, mergeArrays)
|
||||
}
|
||||
return undefined
|
||||
})
|
||||
}
|
||||
|
||||
export function openWindow(url: string, opt?: { target?: TargetContext | string; noopener?: boolean; noreferrer?: boolean }) {
|
||||
|
|
Loading…
Reference in New Issue