如何在ArkTS中实现自定义装饰器能力?

如何在ArkTS中实现自定义装饰器能力?

HarmonyOS
2024-05-23 22:12:58
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
firecc

ArkTS支持TS5.0之前的TS装饰器语法。关于装饰器的定义和运行时行为,可以参考TS官方文档

注意,如果在ets文件中定义装饰器,则需要同时满足ArkTS的语法规则,比如不能使用any等。

参考代码:

//自定义装饰器 
function MyDescriptor(target: Object, key: string, descriptor: PropertyDescriptor) { 
  const originalMethod: Function = descriptor.value 
  descriptor.value = (...args: Object[]) => { 
    // 获取被装饰方法的名称、入参、返回值 
    console.log(`Calling ${target.constructor.name} method ${key} with argument: ${args}`) 
    const result: Object = originalMethod(...args) 
    console.log(`Method ${key} returned: ${result}`) 
    return result 
  } 
  return descriptor 
} 
  @MyDescriptor 
  demoFunc(str:string) { 
    return str 
  } 
  
  aboutToAppear(): void { 
    this.demoFunc('DemoTest') 
  }

运行结果:

分享
微博
QQ
微信
回复
2024-05-24 22:02:28
相关问题
ArkTS是否支持自定义装饰
735浏览 • 1回复 待解决
是否支持自定义装饰
897浏览 • 1回复 待解决
自定义装饰的使用问题
281浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
1039浏览 • 1回复 待解决
ArkTs如何自定义容器组件?
1727浏览 • 1回复 待解决
如何在js文件引入自定义js文件
6274浏览 • 1回复 待解决
ArkTS如何自定义资源文件
847浏览 • 1回复 待解决
如何在自定义函数创建一个UI组件
719浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
1230浏览 • 1回复 待解决
自定义组件如何添加图片?
1234浏览 • 1回复 待解决
如何实现H5自定义事件
834浏览 • 1回复 待解决
自定义弹窗自定义转场动画
436浏览 • 1回复 待解决
鸿蒙如何自定义字体文件
17940浏览 • 1回复 待解决
如何在hvigor自定义任务中使用npm包
428浏览 • 1回复 待解决