25

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

奇怪的语法

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

4

1 回答 1

18

本周的大新闻是 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 开发人员手动编写这些注释是合理的。甚至可以提供一个帮助库。
  • 注解只能放在函数上。

  • 放置在类上的注解是放置在类的构造函数上的注解。

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

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

于 2015-03-06T19:59:21.850 回答