HarmonyOS 鸿蒙Next Arkts如何解构对象
HarmonyOS 鸿蒙Next Arkts如何解构对象
使用如下代码:
private handleRequstSuccess<T extends NetBasicRsp>(res: AxiosResponse, successHandler: (rsp: T) => void): void {
let rsp: T = res.data as T
rsp.responseStatusCode = res.status
rsp.responseCookies = res.headers['set-cookie']
rsp.responseHeader = {...res.headers} // 解构赋值以避免循环引用
let test = JSON.stringify(res.data) // 报错,循环引用
}
在网络请求回调中,需要根据AxiosResponse对象的转换成自定义的NetBasicRsp对象,但转换后进行JSON转换时报循环引用错误,主要是rsp.responseHeader = res.headers
这行代码导致循环引用,这里需要将res.headers
对象解构出来赋值给 rsp.responseHeader
对象(深拷贝)。 请问在Arkts中如何正确的实现此功能?
更多关于HarmonyOS 鸿蒙Next Arkts如何解构对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个是序列化时遇到循环引用的问题,目前可通过主动检测到存在重复时,忽略处理去解决。
可参考以下代码:
// 有如下3个接口
export interface A {
id: number;
name: string;
c?: C;
}
export interface B {
a: A;
}
export interface C {
b: B;
}
@Entry
@Component
struct Page1 {
build() {
Column() {
Button('test loop link')
.onClick(() => {
//构造循环引用样例
let a1: A = {
id: 100,name:'hello1'
}
let b1: B = {
a: a1
}
let c1: C = {
b: b1
}
a1.c = c1;
// let strC1 = JSON.stringify(c1) //执行这里时会抛出异常
// console.info(`DZG strC1: ${strC1}`)
// 以下为解决方案
const seen = new WeakSet();
let strC: string = JSON.stringify(c1,(key: string,value: object) => {
if (typeof value === "object" && value !== null) {
if (seen.has(value)) {
return ;
}
seen.add(value);
}
return value;
});
console.info(`DZG strC: ${strC}`)
})
}
}
更多关于HarmonyOS 鸿蒙Next Arkts如何解构对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)Next Arkts环境中,解构对象通常涉及对对象内部数据成员的访问和分解。鸿蒙系统的ArkTS(Ark TypeScript)扩展了TypeScript的能力,使其能够更高效地开发原生应用。解构对象在ArkTS中与其他现代JavaScript或TypeScript环境类似。
在ArkTS中解构对象的语法与标准的ES6(ECMAScript 2015)解构赋值语法一致。假设你有一个对象,你可以通过以下方式解构它:
// 假设有一个对象
const person = {
name: 'Alice',
age: 30,
address: {
city: 'Wonderland',
zip: '12345'
}
};
// 解构对象
const { name, age, address: { city, zip } } = person;
// 现在可以直接使用解构后的变量
console.log(name); // 输出: Alice
console.log(age); // 输出: 30
console.log(city); // 输出: Wonderland
console.log(zip); // 输出: 12345
在鸿蒙ArkTS环境中,上述代码同样适用,允许你方便地访问和分解对象内部的数据。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html