![](/img/trans.png)
[英]When and how s decorator applied to the decorated classes from the @angular packages
[英]How's decorator applied to classes in angular in case of multiple classes
我们使用@decorator定义类装饰器。
但是,如果我们在同一文件中有多个装饰器和多个类,该装饰器如何映射到其类呢?
还是我们不能在同一文件中使用多个装饰器?
还是我们不能在同一文件中使用多个装饰器?
是的,您可以在同一文件中使用多个装饰器。 您甚至可以在同一类声明中使用多个装饰器,请参见下文。
装饰器如何映射到其类?
装饰器实际上是一个函数。 它映射到它旁边的声明 。
从TypeScript手册-Decorator docs中 :
装饰工
Decorator是一种特殊的声明,可以附加到类声明 , 方法 , 访问器 , 属性或参数上 。 装饰器使用
@expression
形式,其中expression
必须计算为一个函数,该函数将在运行时使用有关修饰声明的信息进行调用。例如,给定装饰器
@sealed
我们可以编写sealed
函数,如下所示:function sealed(target) { // do something with 'target' ... }
因此,同样,您可以在一个文件中包含多个装饰器,并将它们应用到其旁边的类声明 , 方法 , 访问器 , 属性或参数 。
作为可运行的演示总是很受欢迎的,这是一个。
在以下代码中,每个装饰器将为其装饰的每个类打印一条消息。 如您所见,一个类,多个类的多个装饰器都在一个文件中 。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.