如何在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') 
  }

运行结果:

分享
微博
QQ
微信
回复
2024-05-24 22:02:28
相关问题
ArkTS是否支持自定义装饰
2276浏览 • 1回复 待解决
是否支持自定义装饰
2025浏览 • 1回复 待解决
自定义装饰的使用问题
671浏览 • 1回复 待解决
HarmonyOS 是否支持自定义装饰
159浏览 • 1回复 待解决
如何在BuildProfile自定义参数?
159浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
2124浏览 • 1回复 待解决
HarmonyOS 自定义装饰不能作用于ets
252浏览 • 1回复 待解决
如何在js文件引入自定义js文件
7663浏览 • 1回复 待解决
ArkTs如何自定义容器组件?
2966浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
2706浏览 • 1回复 待解决
ArkTS如何自定义资源文件
2110浏览 • 1回复 待解决
如何在自定义函数创建一个UI组件
1722浏览 • 1回复 待解决
怎样实现一个自定义播放
257浏览 • 1回复 待解决
如何在 ArkTS 定义和使用接口?
29浏览 • 0回复 待解决