HarmonyOS 鸿蒙Next 在ARKTS中如何将类对象转为键值对map
HarmonyOS 鸿蒙Next 在ARKTS中如何将类对象转为键值对map
在ts文件中以下代码不报错,但在ets文件中会报错:
Destructuring variable declarations are not supported (arkts-no-destruct-decls) <ArkTSCheck
。代码如下: class Entity {
name: string = ‘’
age: number = 0
content: number[] = []
}
const entity = new Entity()
for (const [key, value] of Object.entries(entity)) {
console.log(${key}: ${value}
);
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
2 回复
报错的原因是新的版本不在支持any等数据类型,推荐以下方式。
let map: Map<string, Object> = new Map();
for (const element of Object.keys(entity)) {
// Reflect.set(this, element, Reflect.get(entity, element));
console.log("获取类对象的属性和值", element, Reflect.get(entity, element))
map.set(element, Reflect.get(entity, element))
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
在HarmonyOS鸿蒙Next的ARKTS中,将类对象转为键值对map,可以通过以下方式实现:
-
定义类并创建实例:
- 首先,定义一个类,并为其属性赋予默认值。
- 接着,创建该类的一个实例。
-
使用反射和Map:
- 通过反射机制,遍历类的所有属性。
- 使用
Map
数据结构,将属性名作为键,属性值作为值,存入Map中。
-
示例代码:
class Entity { name: string = ''; age: number = 0; content: number[] = []; } let entity = new Entity(); let map = new Map<string, Object>(); for (const key of Object.keys(entity)) { map.set(key, Reflect.get(entity, key)); }
注意,在ARKTS中,确保使用兼容的语法和API,避免使用不被支持的解构赋值等特性。
-
输出结果:
- 遍历Map,输出键值对,验证转换是否成功。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。