如何在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是否支持自定义装饰
483浏览 • 1回复 待解决
是否支持自定义装饰
668浏览 • 1回复 待解决
自定义装饰的使用问题
208浏览 • 0回复 待解决
如何在自定义弹窗再次弹窗
800浏览 • 1回复 待解决
如何在js文件引入自定义js文件
6131浏览 • 1回复 待解决
ArkTs如何自定义容器组件?
1533浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
1045浏览 • 1回复 待解决
ArkTS如何自定义资源文件
695浏览 • 1回复 待解决
如何在自定义函数创建一个UI组件
592浏览 • 1回复 待解决
自定义组件如何添加图片?
1102浏览 • 1回复 待解决
如何在hvigor自定义任务中使用npm包
375浏览 • 1回复 待解决
鸿蒙如何自定义字体文件
17781浏览 • 1回复 待解决
如何实现H5自定义事件
702浏览 • 1回复 待解决
如何实现自定义应用入场动画
359浏览 • 1回复 待解决
自定义弹窗自定义转场动画
382浏览 • 1回复 待解决