HarmonyOS 鸿蒙Next 在ARKTS中如何将类对象转为键值对map

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

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,可以通过以下方式实现:

  1. 定义类并创建实例

    • 首先,定义一个类,并为其属性赋予默认值。
    • 接着,创建该类的一个实例。
  2. 使用反射和Map

    • 通过反射机制,遍历类的所有属性。
    • 使用Map数据结构,将属性名作为键,属性值作为值,存入Map中。
  3. 示例代码

    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,避免使用不被支持的解构赋值等特性。

  4. 输出结果

    • 遍历Map,输出键值对,验证转换是否成功。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部