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用法问题
258浏览 • 1回复 待解决
HarmonyOS 关于Map语法问题
301浏览 • 1回复 待解决
HarmonyOS ArkTS语法问题
171浏览 • 1回复 待解决
ArkTS语法咨询问题有懂得吗?
2632浏览 • 1回复 待解决
arkts 关于异步问题
314浏览 • 1回复 待解决
HarmonyOS 开发语法问题
413浏览 • 1回复 待解决
HarmonyOS ArkTS支持TS抽象类吗?
216浏览 • 1回复 待解决
HarmonyOS TS文件如何调用ArkTS代码?
110浏览 • 1回复 待解决
openHarmony 注册服务中语法问题
7100浏览 • 1回复 待解决
ArkTS文件和TS文件区别
2364浏览 • 1回复 待解决
HarmonyOS 关于ArkTS!使用
658浏览 • 1回复 待解决
HarmonyOS 拍照返回uribitmap问题
476浏览 • 1回复 待解决
HarmonyOS 关于ArkTS UI样式文件疑问
351浏览 • 1回复 待解决
HarmonyOS 关于ColorFilter问题
407浏览 • 1回复 待解决
HarmonyOS 关于taskpool问题
200浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
330浏览 • 1回复 待解决
HarmonyOS关于API使用问题
372浏览 • 1回复 待解决
HarmonyOS关于多线程问题
428浏览 • 1回复 待解决
HarmonyOS关于navigation问题
518浏览 • 1回复 待解决
HarmonyOS 关于crash问题
324浏览 • 1回复 待解决
HarmonyOS 关于Web调试问题
190浏览 • 1回复 待解决