最新的TypeScript(可能是v1.5)示例中的@符号代表什么?

26

在官方TypeScript 博客上发布了一张非常有趣的图片。

奇怪的语法

我想知道@符号在那里做什么,因为(据我所知)它不能用于JavaScript标识符。


2
我会阅读关于AtScript的相关资料。它被称为注解。 - Daniel A. White
7
在TypeScript中,"@"运算符表示装饰器(在上面的例子中是一个类装饰器)。你可以在TypeScript文档中了解更多有关装饰器的信息。 - sherb
1个回答

19

本周的重大新闻是AtScript和TypeScript的合并。

以下示例摘自AtScript文档...

@Component()
class MyApp {
  server:Server;
  @Bind('name') name:string;
  @Event('foo') fooFn:Function;
  @Inject()
  constructor(@parent server:Server) {}
  greet():string {}
}

编译后的JavaScript代码如下...

function MyApp() {}
MyApp.properties = {
  'server': { is: Server },
  'name': { is:string,
            annotate: [new Bind('name']},
  'fooFn': { is:Function,
             annotate:[new Event('foo')]}
}
MyApp.annotate = [
  new Component(),
  new Inject()
];
MyApp.parameters = [
  {is:Server, annotate:[parent]}
];
MyApp.prototype.greet = function() {}
MyApp.prototype.greet.returns = string;

AtScript原本计划作为TypeScript的一层(即超集的超集) - 但现在这两个项目已经合并

注释说明如下

  • AtScript的注释语法只是在ES5中放置相同信息的简写。ES5开发人员手动编写这些注释是合理的,甚至可以提供辅助库。
  • 注释只能放置在函数上。

  • 放置在类上的注释等同于放置在类的构造函数上。

  • 放置在字段上的注释将被移动到构造函数中。

  • 所有注释都被翻译为函数的属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接