Я использую typescript для разработки приложений angular 2.
Но когда мы пишем код для конфигурации компонента или маршрута или в другом месте мы используем символ "@".
Мой вопрос в том, что означает этот символ и почему он требуется?
Я использую typescript для разработки приложений angular 2.
Но когда мы пишем код для конфигурации компонента или маршрута или в другом месте мы используем символ "@".
Мой вопрос в том, что означает этот символ и почему он требуется?
Символ @
, на который вы ссылаетесь, называется decorator
.
Декораторы предоставляют способ добавить как аннотации, так и метапрограммирующий синтаксис для объявлений классов и членов.
В основном, когда вы делаете @component
, вы сообщаете компилятору, что класс является компонентом angular2 с метаданными, переданными в качестве аргумента.
например,
@Component({
moduleId: module.id,
selector: 'heroes-app',
templateUrl: 'heroes.component.html',
styleUrls: ['heroes.component.css'],
})
class HeroesComponent{}
этот код сообщит компилятору, что класс HeroesComponent должен быть angular2 компонентом с метаданными, переданным как аргументы, и он создаст класс компонентов.
Декоратор не волшебство. Его просто функция-вызов.
например,
@Component({
selector: 'static-component',
template: `<p>Static Component</p>`
})
class StaticComponent {}
эквивалентно:
class DynamicComponent {
}
const dynamicComponent = Component({
selector: 'dynamic-component',
template: `<p>Dynamic Component</p>`
})(DynamicComponent);
Надеюсь, что это поможет.
Это означает, что вы применяете декоратор.
С введением классов в TypeScript и ES6 теперь существуют определенные сценарии, требующие дополнительных функций для поддержки аннотирования или модификации классов и членов класса. Декораторы обеспечивают способ добавления как аннотаций, так и метапрограммирующего синтаксиса для деклараций классов и членов. Декораторы - это предложение этапа 1 для JavaScript и доступны в качестве экспериментальной функции TypeScript.
Взгляните на это сообщение об аннотациях и декораторах, и там вы поймете разницу между этими двумя концепциями.
http://blog.thoughtram.io/angular/2015/05/03/the-difference-between-annotations-and-decorators.html