【发布时间】:2019-02-23 19:47:47
【问题描述】:
组件 .ts 文件中的@Component({}) 行称为装饰器。这与装饰器模式有关,还是它们无关?
【问题讨论】:
标签: angular typescript decorator angular-decorator typescript-decorator
组件 .ts 文件中的@Component({}) 行称为装饰器。这与装饰器模式有关,还是它们无关?
【问题讨论】:
标签: angular typescript decorator angular-decorator typescript-decorator
它们是相关的,因为您使用附加功能装饰现有类。它们不一样,因为 typescript @Decorator 是在编译时应用的,而装饰器模式也可以用于在运行时装饰类,例如:
let armoredenemy = new Armored(new Enemy())
let enemy = new Enemy()
程序运行时,您仍然可以决定是否要装饰班级。
【讨论】:
打字稿装饰器:
现在是编译时间。这是一次但永久的变化,因为被装饰的班级与原来的班级不同。而且很简单,基本上就是一个函数。
常见的场景是一个装饰器应用于不同的类。例如:在 Angular 中,@injector 装饰器适用于各种类并使它们可注入。
对于一般的装饰器模式:
常见的场景是在一个类上使用不同的装饰器。这是相当繁重的。您需要创建装饰器类,装饰器类和原始类的公共父类,以及不同的子装饰器类。原始类保持不变,您可以在运行时根据需要应用装饰器。
例如:你有一个咖啡课。您可以根据需要创建不同的装饰器类:Espresso、Cappuccino,甚至 expresso + Cappuccino 咖啡。
只要我的 2 美分。
【讨论】: