我试图在一个函数中添加一个自定义的TypeScript装饰器,而这个函数没有包含在类中,似乎无论我做什么编译器都在抱怨。有什么想法吗?可能吗?
xmakbtuz1#
在函数中添加自定义TypeScript装饰器不是原始函数。主要问题是处理hoisting的函数。任何试图将一个函数 Package 在另一个函数中的尝试都会破坏提升。
hoisting
支持目标
@expression
expression
文件:https://www.typescriptlang.org/docs/handbook/decorators.html#decorators
ac1kyiln2#
不可能,因为方法装饰器使用PropertyDescriptor,而这个只能在类中使用。但是,有一个库,你可以在函数中使用方法装饰器,但是没有sintax @myDecorator。装饰器有相同的sintax,你可以在函数中使用现有的方法装饰器https://www.npmjs.com/package/pure-function-decorator但是,取而代之的是:
class Somethind { @log myMethod() { //....
你可以这样使用
const myFunction = fnDecorator([log], () => { /*....*/});
结果也一样
2条答案
按热度按时间xmakbtuz1#
在函数中添加自定义TypeScript装饰器
不是原始函数。主要问题是处理
hoisting
的函数。任何试图将一个函数 Package 在另一个函数中的尝试都会破坏提升。支持目标
@expression
的格式,其中expression
必须评估为将在执行阶段以装饰宣告的相关信息呼叫的函式。文件:https://www.typescriptlang.org/docs/handbook/decorators.html#decorators
ac1kyiln2#
不可能,因为方法装饰器使用PropertyDescriptor,而这个只能在类中使用。
但是,有一个库,你可以在函数中使用方法装饰器,但是没有sintax @myDecorator。装饰器有相同的sintax,你可以在函数中使用现有的方法装饰器
https://www.npmjs.com/package/pure-function-decorator
但是,取而代之的是:
你可以这样使用
结果也一样