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'); 
  } 
}

用于自动初始化一个类的实例放入一个数组中,但是在转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'); 
  }

可参考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'); 
  } 
}
分享
微博
QQ
微信
回复
2024-08-27 18:37:21
相关问题
HarmonyOS TSArkTS用法问题
105浏览 • 1回复 待解决
HarmonyOS 关于Map语法问题
82浏览 • 1回复 待解决
ArkTS语法咨询问题有懂得吗?
2524浏览 • 1回复 待解决
arkts 关于异步问题
59浏览 • 1回复 待解决
HarmonyOS 开发语法问题
273浏览 • 1回复 待解决
HarmonyOS ArkTS支持TS抽象类吗?
82浏览 • 1回复 待解决
HarmonyOS 关于ArkTS!使用
343浏览 • 1回复 待解决
HarmonyOS 拍照返回uribitmap问题
335浏览 • 1回复 待解决
openHarmony 注册服务中语法问题
6966浏览 • 1回复 待解决
ArkTS文件和TS文件区别
2257浏览 • 1回复 待解决
HarmonyOS 关于ColorFilter问题
182浏览 • 1回复 待解决
HarmonyOS 关于taskpool问题
51浏览 • 1回复 待解决
HarmonyOS 关于ArkTS UI样式文件疑问
219浏览 • 1回复 待解决
ArkTS语法校验报错,该如何处理啊?
776浏览 • 1回复 待解决
ArkTS有哪些语法规则,有懂得吗?
1901浏览 • 1回复 待解决
HarmonyOS SDK .d.ts 声明问题
516浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
172浏览 • 1回复 待解决
HarmonyOS关于多线程问题
295浏览 • 1回复 待解决
HarmonyOS关于API使用问题
245浏览 • 1回复 待解决
HarmonyOS 关于Navigation组件问题
269浏览 • 1回复 待解决
HarmonyOS 关于Web调试问题
37浏览 • 1回复 待解决