HarmonyOS Object.assign(target, source)报错

Usage of standard library is restricted (ArkTS-limited-stdlib) <ArkTSCheck>

HarmonyOS
2024-08-28 14:05:34
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
zbw_apple

有两种方法可以解决:

方法1:自行封装一个 assign 方法合并对象代替Object原生的assign的方法,代码如下:

function assign(target: Record<string, Object>, …source: Object[]): Record<string, Object> { 
  for (const items of source) { 
  for (const key of Object.keys(items)) { 
  target[key] = Reflect.get(items, key) 
} 
} 
return target; 
}

方法二:在 ts 文件中封装一个工具类,然后在ets中引入使用。(把原文件换成ts文件,再ets中引入)

export class ObjectUtils { 
  /** 
   *对象合并 
   *@param target 目标对象 
   *@param source 源对象 
   *@return 合并后的对象 
   **/ 
  static assign(target: Object, source?: Object): Object{ 
    return Object.assign(target, source); 
  }
分享
微博
QQ
微信
回复
2024-08-28 23:02:32
wx672e125f5e51d

 

class Girl {

 name:string;

 age:number;

 constructor(name:string,age:number) {

   this.name = name

   this.age = age

 }

 // Assign<T extends {}, U>(target: T, source: U): T & U {

 //   return Object.assign(target, source); //4.0开始不准调用 standard libary

 // }

 

} //girl




function  assign(target: Record<string, Object>, source: Object[]): Record<string, Object> {

 for (const items of source) {

 for (const key of Object.keys(items)) {

 target[key] = Reflect.get(items, key)

}

}

return target;

}   //assign2


let g1 = new Girl("minami",22)

let g2 = assign({} , g1)


class Person {

 name:string = ''

 age:number = 0

 gf:Girl


 constructor(name:string,age:number,gf:Girl) {

   this.name = name

   this.age = age

   this.gf = gf

 }

}

---------------

在let g2 = assign({} , g1) 时报错。

Argument of type 'Girl' is not assignable to parameters of the 'Object[]'.

Type 'Girl' is missing the following propertiest from type 'Object[]': length,

pop, push, concat, and 28 more. <ArkTSCheck>


在 devStudio 5.0 中function assign不能调用,请问要怎么改?



分享
微博
QQ
微信
回复
2024-11-08 21:35:32
相关问题
HarmonyOS object.assign实现
179浏览 • 1回复 待解决
Object.assign()的替代方法
166浏览 • 1回复 待解决
HarmonyOS api 11 Object.assign 会报红
103浏览 • 1回复 待解决
HarmonyOS Objectobject的区别
385浏览 • 1回复 待解决
如何实现解构及Obejct.assign
770浏览 • 1回复 待解决
大家对Open source有什么看法?
3367浏览 • 0回复 待解决
Edit Configurations无法修改Product和Target
905浏览 • 1回复 待解决
Issue,迭代交叉KV(NoSql/Redis)Target
2399浏览 • 1回复 待解决
Host AOT和Target AOT是指什么
1744浏览 • 1回复 待解决
HarmonyOS string object大小写区别
413浏览 • 1回复 待解决