对于以下给定的语法,
import validator from "./ZipCodeValidator";
在当前名称空间中,在构建/捆绑时,将对象字典从ZipCodeValidator.ts
导入到名称validator
,
ZipCodeValidator.ts
的样子:
export class C {
@f()
@g()
method() {}
}
装饰器(f
& g
)是否在构建/捆绑时运行import语句(上面)时执行ZipCodeValidator.ts
中的方法注释?
答案 0 :(得分:4)
执行类声明时总是执行装饰器。由于大多数类声明通常位于模块的顶级范围内,因此可以表示它们在执行代码时运行,但没有什么能阻止您在另一个函数内部进行类声明,在这种情况下,装饰器只会在调用该函数时运行。
在您的特定情况下,装饰器工厂method
将在声明期间运行以返回实际的装饰器函数,然后类声明将调用装饰器。
当调用method
时,装饰器函数本身总是可以改变{{1}}来调用一些自定义逻辑,但是装饰器本身就很久了。