HarmonyOS 鸿蒙Next中ArkTS不支持解构及assign,怎么给对象赋值
HarmonyOS 鸿蒙Next中ArkTS不支持解构及assign,怎么给对象赋值
ArkTS不支持解构及assign 怎么给对象赋值
```javascript
interface A {
a: string,
b: number,
c: Object
}
let test1: A = {}
let test2: A = {}
3 回复
可以封装一个assign方法 原方法:
function assign<T, U>(target: T, source: U): T & U;
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// Expected output: Object { a: 1, b: 4, c: 5 }
// 自己实现:
function assign(target: Record<string, Object>, ...source: Object[]): Record<string, Object> {
for (let s of source) {
for (let k of Object.keys(s)) {
target[k] = Reflect.get(s, k)
}
}
return target
}
class D { b: number, c: number }
const target: Record<string, Object> = { "a": 1, "b": 2, }
const source: D = { b: 4, c: 5 }
const returnedTarget: Record<string, Object> = Object.assign(target, source)
console.log(target)
// Expected output: Object { a: 1, b: 4, c: 5 }
更多关于HarmonyOS 鸿蒙Next中ArkTS不支持解构及assign,怎么给对象赋值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,ArkTS不支持解构及Object.assign
,但可以通过直接赋值的方式给对象赋值。假设有一个对象obj
,你可以直接通过属性名进行赋值,例如:
let obj = { a: 1, b: 2 };
obj.a = 3;
obj.b = 4;
如果需要对多个属性进行赋值,可以逐一操作:
let obj = { a: 1, b: 2, c: 3 };
obj.a = 10;
obj.b = 20;
obj.c = 30;
如果需要合并两个对象,可以手动进行属性复制:
let obj1 = { a: 1, b: 2 };
let obj2 = { c: 3, d: 4 };
obj1.c = obj2.c;
obj1.d = obj2.d;
ArkTS的设计理念是保持代码的简洁和可维护性,因此虽然不支持解构和Object.assign
,但通过直接赋值的方式也能实现相同功能。
在HarmonyOS的ArkTS中,由于不支持解构和Object.assign
,你可以通过手动赋值的方式为对象属性赋值。例如:
let obj1 = { a: 1, b: 2 };
let obj2 = { b: 3, c: 4 };
// 手动赋值
obj1.b = obj2.b;
obj1.c = obj2.c;
console.log(obj1); // 输出: { a: 1, b: 3, c: 4 }
这种方式虽然不如解构或Object.assign
简洁,但在ArkTS中是可行的。