【HarmonyOS NEXT】扩展一个Object属性,或者将多个object进行动态合并,除了转为map然后遍历插入键值对之外,有没有官方的替代方法

 【关键字】

ArkTS / JS / 扩展Object / 动态合并 / map

【问题描述】

TS的很多标准库和语法都被ArkTS做了限制,导致很多便捷的JS语法及方法无法使用,ArkTS有没有替代方法?比如有很多场景是需要扩展一个Object的属性,或者将多个object进行动态合并,除了转为map然后遍历插入键值对之外,有没有官方的替代方法?

【解决方案】

map是可以的,扩展属性就是点的形式,合并的话,也可以初始化一个Record<string, Object>对象,Object.entries遍历在ets文件中可自行实现assign,使用Record<string, Object>结合for循环遍历。

参考代码如下:

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;
}
interface add {
testadd: Object
}

interface IMerge {
a: add,
b?: number,
c?: string,
}
let c: Record<string, Object> = {
'testc': 'c'
}

let a: IMerge =
{
a: {
testadd: 1
}
}
let b = assign(c, a);
console.log('b is ' + JSON.stringify(b));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值