index.ts 878 B

123456789101112131415161718192021222324252627282930313233
  1. // @ts-nocheck
  2. /**
  3. * 深度合并两个对象,用默认值填充目标对象中未定义的属性
  4. *
  5. * @template T - 合并对象的泛型类型
  6. * @param {T} obj - 目标对象(将被修改)
  7. * @param {T} defaults - 包含默认值的对象
  8. * @returns {T} 合并后的对象(即修改后的obj参数)
  9. */
  10. export function merge<T>(obj : T, defaults : T) : T {
  11. // #ifdef APP-ANDROID
  12. try {
  13. if(obj instanceof UTSJSONObject && defaults instanceof UTSJSONObject) {
  14. return UTSJSONObject.assign<T>(obj, defaults)!// as T
  15. }
  16. const obj1 = { ...toRaw(obj) }
  17. const obj2 = { ...toRaw(defaults) }
  18. return UTSJSONObject.assign<T>(obj1, obj2)!
  19. } catch (error) {
  20. return defaults
  21. }
  22. // #endif
  23. // #ifndef APP-ANDROID
  24. for (const key in defaults) {
  25. if (obj[key] === undefined || obj[key] === null) {
  26. obj[key] = defaults[key];
  27. }
  28. }
  29. return obj;
  30. // #endif
  31. }