typescript 为函数而不是方法的类型脚本装饰器,可能吗?

rqqzpn5f  于 2022-12-05  发布在  TypeScript
关注(0)|答案(2)|浏览(151)

我试图在一个函数中添加一个自定义的TypeScript装饰器,而这个函数没有包含在类中,似乎无论我做什么编译器都在抱怨。
有什么想法吗?可能吗?

xmakbtuz

xmakbtuz1#

在函数中添加自定义TypeScript装饰器
不是原始函数。主要问题是处理hoisting的函数。任何试图将一个函数 Package 在另一个函数中的尝试都会破坏提升。

支持目标

  • Decorator* 是一种特殊的宣告,可以附加至类别宣告、方法、存取子、属性或参数。Decorator使用@expression的格式,其中expression必须评估为将在执行阶段以装饰宣告的相关信息呼叫的函式。

文件:https://www.typescriptlang.org/docs/handbook/decorators.html#decorators

ac1kyiln

ac1kyiln2#

不可能,因为方法装饰器使用PropertyDescriptor,而这个只能在类中使用。
但是,有一个库,你可以在函数中使用方法装饰器,但是没有sintax @myDecorator。装饰器有相同的sintax,你可以在函数中使用现有的方法装饰器
https://www.npmjs.com/package/pure-function-decorator
但是,取而代之的是:

class Somethind {
  @log
  myMethod() { //....

你可以这样使用

const myFunction = fnDecorator([log], () => { /*....*/});

结果也一样

相关问题