ecmascript 6 中的“@”字符是什么意思?

dar*_*ong 5 javascript ecmascript-6 angular

给定下面的脚本,可以在Angular 2 官方教程中找到,“@”字符是什么意思?这是 ecmascript 6 的功能吗?

谁能详细说明一下吗?

import {Component} from 'angular2/core';
export class Hero {
  id: number;
  name: string;
}
@Component({
  selector: 'my-app',
  template:`
    <h1>{{title}}</h1>
    <h2>{{hero.name}} details!</h2>
    <div><label>id: </label>{{hero.id}}</div>
    <div>
      <label>name: </label>
      <input [(ngModel)]="hero.name" placeholder="name">
    </div>
    `
})
export class AppComponent {
  public title = 'Tour of Heroes';
  public hero: Hero = {
    id: 1,
    name: 'Windstorm'
  };
}
Run Code Online (Sandbox Code Playgroud)

Hen*_*nte 1

这只是 TypeScript 装饰器,请在此处查看

类装饰器在类声明之前声明。类装饰器应用于类的构造函数,可用于观察、修改或替换类定义。类装饰器不能在声明文件或任何其他环境上下文中(例如在声明类上)使用。

类装饰器的表达式将在运行时作为函数调用,装饰类的构造函数作为其唯一参数。

如果类装饰器返回一个值,它将用提供的构造函数替换类声明。

注意:如果您选择返回新的构造函数,则必须注意维护原始原型。在运行时应用装饰器的逻辑不会为您执行此操作。以下是应用于 Greeter 类的类装饰器 (@sealed) 的示例:

@sealed
class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}
Run Code Online (Sandbox Code Playgroud)