【发布时间】:2016-11-05 07:37:08
【问题描述】:
我正在使用 typescript 进行 Angular 2 应用程序开发。
但是当我们为组件或路由配置或其他地方编写代码时 我们使用“@”符号。
我的问题是这个符号是什么意思,为什么需要它?
【问题讨论】:
标签: typescript angular
我正在使用 typescript 进行 Angular 2 应用程序开发。
但是当我们为组件或路由配置或其他地方编写代码时 我们使用“@”符号。
我的问题是这个符号是什么意思,为什么需要它?
【问题讨论】:
标签: typescript angular
这意味着你正在应用一个装饰器。
随着 TypeScript 和 ES6 中类的引入,现在存在某些需要附加功能来支持注释或修改类和类成员的场景。装饰器提供了一种为类声明和成员添加注释和元编程语法的方法。装饰器是 JavaScript 的第 1 阶段提案,可作为 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);
希望这会有所帮助。
【讨论】: