typescript - keys - property map does not exist on type observable response angular 6




Что означает символ @ в машинописи-Angular 2 (2)

Я использую машинопись для разработки приложений Angular 2.

Но когда мы пишем код для компонента или конфигурации маршрута или другого места, мы используем символ «@».

У меня вопрос, что означает этот символ и почему он необходим?


Это означает, что вы применяете декоратор.

С введением классов в TypeScript и ES6 теперь существуют определенные сценарии, которые требуют дополнительных функций для поддержки аннотирования или изменения классов и членов класса. Декораторы предоставляют способ добавлять как аннотации, так и синтаксис метапрограммирования для объявлений классов и членов. Декораторы являются предложением этапа 1 для JavaScript и доступны в качестве экспериментальной функции TypeScript.


Символ @ вы ссылаетесь, называется 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);

Надеюсь это поможет.







angular