В чем разница между аннотацией и декоратором?

Я смущен, когда использовать аннотацию термина и когда использовать декоратор ?

 @Component({
      selector: 'tabs',
      template: `
      `
    })
    export class Tabs {

    }

2 ответов


декоратор соответствует функции, которая вызывается в классе, тогда как аннотации являются" только " метаданными, установленными в классе с помощью библиотеки метаданных Reflect.

С TypeScript и ES7,@Something - декоратор. В контексте Angular2, декораторы, как @Component, @Injectable, ... определите метаданные для элемента decorated с помощью Reflect.defineMetadata метод.

этот вопрос может вас заинтересовать, чтобы узнать, что на самом деле декоратор есть:


Traceur дает нам annotations. Машинопись дает нам decorators. Но Angular 2 поддерживает оба.

аннотации создайте массив "аннотации". в то время как декораторы-это функции, которые получают украшенный объект и могут вносить в него любые изменения.

в качестве углового используйте TypeScript вместо atScript, поэтому он использует декораторы. Есть в основном четыре вида декораторов есть которые

  • декораторы класса, например @Component и @NgModule
  • декораторы свойств для свойств внутри классов, например @Input и @Output
  • декораторы методов для методов внутри классов, например @HostListener
  • декораторы параметров для параметров внутри конструкторов классов, например @Inject

Для больше в глубине вы можете сослаться