我正在使用typescript进行角度2应用程序开发。
但是当我们为组件或路由配置或其他地方编写代码时 我们使用" @"符号
我的问题是这个符号的含义以及为什么需要它?
答案 0 :(得分:31)
您所指的@
符号称为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);
希望这有帮助。
答案 1 :(得分:10)
这意味着您正在申请装饰。
随着TypeScript和ES6中Classes的引入,现在存在一些需要额外功能来支持注释或修改类和类成员的场景。装饰器提供了一种为类声明和成员添加注释和元编程语法的方法。装饰器是JavaScript的第1阶段提案,可作为TypeScript的实验性功能使用。