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用法问题
1215浏览 • 1回复 待解决
HarmonyOS ArkTS语法问题
1372浏览 • 1回复 待解决
HarmonyOS ArkTS语法问题
1586浏览 • 1回复 待解决
HarmonyOS 关于Map语法问题
1918浏览 • 1回复 待解决
HarmonyOS 关于ArkTSTS类型检测
972浏览 • 1回复 待解决
ArkTS/TS 选型问题
1339浏览 • 1回复 待解决
HarmonyOS 关于JSON问题
957浏览 • 1回复 待解决
ArkTS语法咨询问题有懂得吗?
3784浏览 • 1回复 待解决
HarmonyOS 关于list如何jsonArray问题
580浏览 • 1回复 待解决
HarmonyOS ArkTS语法
1131浏览 • 1回复 待解决
arkts 关于异步问题
1456浏览 • 1回复 待解决
HarmonyOS ArkTS语法相关
1186浏览 • 1回复 待解决
HarmonyOS ArkTS语法报错咨询
1535浏览 • 1回复 待解决
HarmonyOS ArkTS语法适配报错
1605浏览 • 1回复 待解决
HarmonyOS 关于仓颉和ArkTS问题
1221浏览 • 1回复 待解决
HarmonyOS 语法问题
1149浏览 • 1回复 待解决
HarmonyOS 语法问题
1168浏览 • 1回复 待解决
HarmonyOS 关于arkts协议问题
855浏览 • 1回复 待解决
HarmonyOS ArkTS是否支持反射语法
1475浏览 • 1回复 待解决
HarmonyOS 关于jsonmodel处理
1268浏览 • 1回复 待解决
HarmonyOS 开发语法问题
1612浏览 • 1回复 待解决
HarmonyOS 关于.ets与.ts使用抉择
1862浏览 • 1回复 待解决