公式TypeScriptに非常に興味深い画像が掲載されましたブログ。
@ (アットマーク) 記号は (私の知る限り) JavaScript 識別子では使用できないので、そこで何をしているのか疑問に思います。
ベストアンサー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の上のレイヤー(つまりスーパーセットのスーパーセット)として計画されていましたが、現在では2つのプロジェクトは1つ。
- AtScript の注釈構文は、同じ情報を ES5 に配置するための単なる省略形です。ES5 開発者がこれらの注釈を手動で記述するのは合理的です。ヘルパー ライブラリを提供することもできます。
注釈は関数にのみ配置できます。
クラスに配置されるアノテーションは、クラスのコンストラクター関数に配置されるアノテーションです。
フィールドに配置されたアノテーションはコンストラクター関数に移動されます。
すべての注釈は関数のプロパティとして変換されます。