SmartParks_visitore/uni_modules/lime-shared/merge/index.ts
2025-08-21 11:23:54 +08:00

33 lines
878 B
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// @ts-nocheck
/**
* 深度合并两个对象,用默认值填充目标对象中未定义的属性
*
* @template T - 合并对象的泛型类型
* @param {T} obj - 目标对象(将被修改)
* @param {T} defaults - 包含默认值的对象
* @returns {T} 合并后的对象即修改后的obj参数
*/
export function merge<T>(obj : T, defaults : T) : T {
// #ifdef APP-ANDROID
try {
if(obj instanceof UTSJSONObject && defaults instanceof UTSJSONObject) {
return UTSJSONObject.assign<T>(obj, defaults)!// as T
}
const obj1 = { ...toRaw(obj) }
const obj2 = { ...toRaw(defaults) }
return UTSJSONObject.assign<T>(obj1, obj2)!
} catch (error) {
return defaults
}
// #endif
// #ifndef APP-ANDROID
for (const key in defaults) {
if (obj[key] === undefined || obj[key] === null) {
obj[key] = defaults[key];
}
}
return obj;
// #endif
}