Angular 2 @Component语法是ES6的一部分吗?

时间:2015-05-13 14:14:39

标签: angular typescript ecmascript-6

任何人都可以告诉我。导入的Component函数前面的'@'符号。这是ES6语法吗?我还没有看到它用于我曾经看过的任何其他无角度ES6项目。

import {Component} from ...
@Component({})

Here is a example

3 个答案:

答案 0 :(得分:18)

@语法是es7新草案的一部分,目前正处于第1阶段(提案阶段)。他们被称为装饰者。

  

装饰器可以在设计时注释和修改类和属性。

有关详细信息,请参阅:https://github.com/wycats/javascript-decorators

注意:通过启用optional[]=es7.decorators(在webpack中)或将配置设置为stage:1

,您可以使用Babel来使用装饰器

答案 1 :(得分:5)

简短回答:不。

@语法定义了一个注释 - 这是由Angular的AtScript引入的,后来合并到TypeScript。从我所看到的,它们类似于.NET语言中的注释。

注释不是标准ES6的一部分;它们只是TypeScript提供的装饰。值得注意的是,Angular 2支持使用TypeScript注释,Aurelia也是如此。

我目前无法提供链接,但有一些资源可以非常详细地描述ES6的功能和语言组件。

答案 2 :(得分:5)

仅针对记录,只需将TypeScript注释转换为以下内容,即可在ES6中实现相同的行为:

import {Component, ...} from 'angular2/core';
export class myAppOrDirective {
    static get annotations() {
        return [
            new Component({
                selector: 'my-app-or-directive'
            }),
            new View({
                template: `<div>Hello!</div>`
            })
        ];
    }
}