繁体   English   中英

装饰器如何在多个类的情况下应用于角度类

[英]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

DEMO JSFiddle在这里。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM