【关键字】
Object.assign方法 / ArkTS / assign方法
【问题描述】
Object.assign方法是不让用了吗,用什么方法可以替换。
代码:
public static assign<T, U>(target: T, source: U): void {
Object.assign<T, U>(target, source)}
错误信息:
ERROR: ArkTS:ERROR File: C:/Users/****/StudioProjectsNew/Harmony/Paotui/uuSystemBase/src/main/ets/com/uupt/util/UuObjectUtils.ets:9:19
Type 'T' does not satisfy the constraint '{}'.
ERROR: ArkTS:ERROR File: C:/Users/****/StudioProjectsNew/Harmony/Paotui/uuSystemBase/src/main/ets/com/uupt/util/UuObjectUtils.ets:9:5Usage of standard library is restricted (arkts-limited-stdlib)
【解决方案】
出于性能考虑,目前ArkTS限制了ES6的Object.assign()方法的使用。若需要在ets文件中扩展对象属性或合并两个对象时,可以自行实现assign方法。
自定义assign方法:
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;
}
具体使用可参考:
https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-arkts-kit-0000001816452241