Что означает @ (в знаке) в последнем примере TypeScript (предположительно v1.5)?

javascript angular typescript atscript

5393 просмотра

1 ответ

8936 Репутация автора

Там очень интересная картинка была размещена в официальном блоге TypeScript .

Странный синтаксис

Интересно, что там делает символ @ (в знаке), поскольку (насколько я знаю) его нельзя использовать в идентификаторах JavaScript.

Автор: Trident D'Gao Источник Размещён: 06.03.2015 07:49

Ответы (1)


14 плюса

170716 Репутация автора

Главной новостью этой недели является объединение 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 было бы разумно написать эти аннотации вручную. Может быть предоставлена ​​вспомогательная библиотека.
  • Аннотации могут быть размещены только на функции.

  • Аннотация, помещаемая в класс, является примечанием, помещенным в функцию конструктора класса.

  • Помещение, помещенное в поле, перемещается в функцию конструктора.

  • Все аннотации переводятся как свойства в функцию.

Автор: Fenton Размещён: 06.03.2015 07:59
Вопросы из категории :
32x32