Ответ 1
Большие новости на этой неделе - это слияние 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 было бы разумно написать эти аннотации вручную. Также может быть предоставлена вспомогательная библиотека.
-
Аннотации могут быть помещены только на функции.
-
Аннотации, помещенные в класс, представляют собой аннотацию, помещенную в функцию конструктора классов.
-
Аннотации, помещенные в поле, перемещаются в конструктор.
-
Все аннотации переводится как свойства для функции.