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

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

HarmonyOS
2024-05-23 22:12:58
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
海不辞水

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') 
  }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.

运行结果:

分享
微博
QQ
微信
回复
2024-05-24 22:02:28
相关问题
HarmonyOS ArkTS 如何实现自定义装饰
803浏览 • 1回复 待解决
ArkTS是否支持自定义装饰
3577浏览 • 1回复 待解决
是否支持自定义装饰
2874浏览 • 1回复 待解决
HarmonyOS 怎么自定义装饰
764浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
1027浏览 • 1回复 待解决
自定义装饰的使用问题
1491浏览 • 1回复 待解决
HarmonyOS 自定义装饰的this指向问题
859浏览 • 1回复 待解决
HarmonyOS 能否自定义自己的装饰
843浏览 • 2回复 待解决
HarmonyOS 自定义装饰不能作用于ets
1461浏览 • 1回复 待解决
如何在BuildProfile自定义参数?
898浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
3228浏览 • 1回复 待解决