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



我们使用@decorator来定义类装饰器。

但是,如果我们在同一个文件中有多个装饰器和多个类,装饰器如何映射到它们的类呢?

或者我们不能在同一文件中使用多个装饰器吗?

或者我们不能在同一文件中使用多个装饰器吗?

是的,您可以在同一文件中使用多个修饰器。您甚至可以在同一类声明中使用多个装饰器,请参见下文。

装饰器如何映射到他们的类?

装饰器实际上是一个函数。它映射到它旁边的声明

来自 TypeScript 手册 - 装饰器文档:

装饰

装饰器是一种特殊的声明,可以附加到 类声明、方法、访问器、属性或参数。 装饰者使用形式@expressionexpression必须 评估为将在运行时使用信息调用的函数 关于装饰声明。

例如,给定装饰器@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

演示JSFiddle在这里。

相关内容

  • 没有找到相关文章

最新更新