Decorators は ECMAScript で Propose となっている実装で、Angular 2 と TypeScript を使った実装ではよく出てくる。 Exploring ES2016 Decorators – Google Developers – Mediumを参考にすると、定義したfunction名の頭に「@」をつけて、使いたいclassやpropertyの前に記述するらしい。
An ES2016 decorator is an expression which returns function and can take a target, name and property descriptor as arguments. You apply it by prefixing the decorator with an
@
character and placing this at the very top of what you are trying to decorate. Decorators can be defined for either a class or property.
Exploring ES2016 Decorators – Google Developers – Mediumに記述されているサンプルコード(一部)は下記のような感じ。
1 | function readonly(target, key, descriptor){ |
上記の例の場合、meow functionオブジェクトの writable プロパティが false に設定される。
Angular.ioの5 Min Quickstartでは、下記のようなサンプルコードが載っている。@ComponentのDecoratorsで設定したプロパティが、AppComponentに設定される。
1 | import {Component} from 'angular2/core'; |
(なお、TypeScriptをJavascriptにcompileする場合には、tsconfigのcompilerOptionsで"experimentalDecorators": trueの設定が必要がある。)
という感じのメモ(書いてみたら大して書くこと思いつかなかった)。
そのほか参考: