HarmonyOS关于TS转ArkTS的语法问题

现有一个自定义装饰器方案,原TS中的写法如下:

// 定义一个全局数组,用于存储被特定装饰器装饰的类的实例 
const decoratedClassesInstances: any[] = []; 
// 定义一个装饰器 
function SpecificDecorator(): ClassDecorator { 
  return function (target: Function) { 
    // 将被装饰的类的实例化对象添加到数组中 
    decoratedClassesInstances.push(new target()); 
  }; 
} 
@SpecificDecorator() 
class MyClass2 { 
  sayHello() { 
    console.log('Hello from MyClass2'); 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

用于自动初始化一个类的实例放入一个数组中,但是在转ArkTS环境中发现,无法使用new target()语法,请问下这边应该怎么实现?

HarmonyOS
2024-08-27 11:14:38
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

可以使用Reflect.construct()方法来实现类的实例化:

const decoratedClassesInstances: any[] = []; 
function SpecificDecorator(): ClassDecorator { 
  return function(target: Function) {   decoratedClassesInstances.push(Reflect.construct(target, [])); 
  }; 
} 
@SpecificDecorator() 
class MyClass2 { 
  sayHello() { 
    console.log('Hello from MyClass2'); 
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

可参考demo:

// 定义一个全局数组,用于存储被特定装饰器装饰的类的实例 
const decoratedClassesInstances: Object[] = []; 
// 定义一个装饰器 
function SpecificDecorator(o:object): ClassDecorator { 
  return (target: Function) => { 
    // 将被装饰的类的实例化对象添加到数组中 
    console.log(JSON.stringify(o)) 
    decoratedClassesInstances.push(o); 
  }; 
} 
@SpecificDecorator(new MyClass2()) 
class MyClass2 { 
  id:number = 1111 
  sayHello() { 
    console.log('Hello from MyClass2'); 
  } 
} 
@SpecificDecorator(new MyClass3()) 
class MyClass3 { 
  id:number = 2222 
  sayHello() { 
    console.log('Hello from MyClass2'); 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
分享
微博
QQ
微信
回复
2024-08-27 18:37:21
相关问题
HarmonyOS TSArkTS用法问题
1006浏览 • 1回复 待解决
HarmonyOS ArkTS语法问题
1177浏览 • 1回复 待解决
HarmonyOS ArkTS语法问题
1295浏览 • 1回复 待解决
HarmonyOS 关于Map语法问题
1643浏览 • 1回复 待解决
HarmonyOS 关于ArkTSTS类型检测
677浏览 • 1回复 待解决
ArkTS语法咨询问题有懂得吗?
3637浏览 • 1回复 待解决
HarmonyOS 关于JSON问题
793浏览 • 1回复 待解决
ArkTS/TS 选型问题
990浏览 • 1回复 待解决
HarmonyOS 关于list如何jsonArray问题
447浏览 • 2回复 待解决
HarmonyOS ArkTS语法
913浏览 • 1回复 待解决
arkts 关于异步问题
1138浏览 • 1回复 待解决
HarmonyOS ArkTS语法相关
935浏览 • 1回复 待解决
HarmonyOS ArkTS语法报错咨询
1197浏览 • 1回复 待解决
HarmonyOS ArkTS语法适配报错
1212浏览 • 1回复 待解决
HarmonyOS 关于arkts协议问题
690浏览 • 1回复 待解决
HarmonyOS 关于仓颉和ArkTS问题
1020浏览 • 2回复 待解决
HarmonyOS 语法问题
1013浏览 • 1回复 待解决
HarmonyOS 语法问题
979浏览 • 1回复 待解决
HarmonyOS ArkTS是否支持反射语法
1151浏览 • 1回复 待解决
HarmonyOS 开发语法问题
1477浏览 • 1回复 待解决
HarmonyOS 关于jsonmodel处理
986浏览 • 1回复 待解决
HarmonyOS ArkTSTS区别
946浏览 • 1回复 待解决