最新の TypeScript (おそらく v1.5) の例の @ (アットマーク) は何を意味しますか? 質問する

最新の TypeScript (おそらく v1.5) の例の @ (アットマーク) は何を意味しますか? 質問する

公式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 開発者がこれらの注釈を手動で記述するのは合理的です。ヘルパー ライブラリを提供することもできます。
  • 注釈は関数にのみ配置できます。

  • クラスに配置されるアノテーションは、クラスのコンストラクター関数に配置されるアノテーションです。

  • フィールドに配置されたアノテーションはコンストラクター関数に移動されます。

  • すべての注釈は関数のプロパティとして変換されます。

おすすめ記事