我们使用@decorator来定义类装饰器。
但是如果我们在同一个文件中有多个装饰器和多个类,那么装饰器如何映射到它们的类呢?
或者我们不能在同一个文件中使用多个装饰器?
答案 0 :(得分:0)
或者我们不能在同一个文件中使用多个装饰器?
是的,您可以在同一个文件中使用多个装饰器。你甚至可以在同一个类声明中使用多个装饰器,见下文。
装饰器如何映射到他们的类?
装饰器实际上是一个功能。 映射到它旁边的声明。
来自TypeScript Handbook - Decorator docs:
装修
装饰器是一种特殊的声明,可以附加到 class declaration,method,accessor,property或parameter。 装饰者使用
@expression
形式,其中expression
必须 计算将在运行时使用信息调用的函数 关于装饰宣言。例如,鉴于装饰者
@sealed
,我们可能会写sealed
功能如下:function sealed(target) { // do something with 'target' ... }
因此,您再次可以在一个文件中包含多个装饰器,并将它们应用于class declaration,method,accessor,{{3} },或旁边的property。
作为一个可运行的演示总是受欢迎,这是一个。
在下面的代码中,每个装饰器将为它装饰的每个类打印一条消息。如您所见,单个类,多个类的多个装饰器都在一个文件中。
function MyDecoratorOne(target) {
console.log('MyDecoratorOne decorating class: ' + target.name);
}
function MyDecoratorTwo(target) {
console.log('MyDecoratorTwo decorating class: ' + target.name);
}
@MyDecoratorOne
@MyDecoratorTwo
class Aaa {
aaaMethod() {}
}
@MyDecoratorOne
@MyDecoratorTwo
class Bbb {
bbbMethod() {}
}
输出:
MyDecoratorTwo decorating class: Aaa
MyDecoratorOne decorating class: Aaa
MyDecoratorTwo decorating class: Bbb
MyDecoratorOne decorating class: Bbb