为什么我们在 TypeScript 中说装饰器?为什么不使用注释(如 Java)或属性(如 C#)?

Why we say decorators in TypeScript? Why not Annotation(like Java) or Attributes(like C#)?

我想知道为什么 TypeScript 中的此功能称为 Decorator

它只是与 AnnotationAttribute 的名称不同吗?还有其他原因吗?

DecoratorAnnotation/Attribute 有什么区别?

这是因为他们做的事情不同。

注释将元数据添加到一段代码中,稍后可以被其他代码读取和使用。 而装饰用其他代码装饰一些代码。

以日志为例。

记录器可以在运行时检索日志注解(可能通过反射),并根据它生成日志记录。

日志装饰将用记录信息的函数围绕记录的代码。

Java 中的注释是 元数据 附加到 class、方法等

但是 TypeScript 中的装饰器是 函数,它可以添加元数据,但也可以添加一些行为,例如日志记录。

更多信息:https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/Decorators.md