Javascriptデコレータとは何か?
デコレーターはAngular 2+での使用のおかげで普及しました。Angularでは、デコレータはTypeScriptのおかげで利用可能ですが、JavaScriptでは現在、第2ステージで。つまり、将来のアップデートに含まれる可能性があります。
デコレータはJavaScriptで特別な構文を使用します。コードの直前に@
シンボルプリフィックスが付いて配置されます。
同じコードに複数のデコレータを使用することができます。デコレータは宣言した順序で適用されます。
例えば:
@log()
@immutable()
class Example {
@time('demo')
doSomething() {
}
}
これは一つのクラスと3つのデコレータを定義し、2つはクラス自体に、もう1つはクラスのプロパティに適用されます。
- @logはクラスのすべてのアクセスログに記録します。
- @immutableはクラスを不変にします。新しいインスタンスで呼び出すかもしれません。
- @timeは単一のタグでメソッドが実行されログアウトする時間を記録します。
現在のところ、デコレータを使用するには、現在のブラウザやノードリリースではまだサポートされていないため、transpilerサポートが必要です。
Babelを使用している場合、これはtransform-decorators-legacyプラグインを使用するだけで有効になります。
注:このプラグインでは "legacy"という言葉を使用するのは、バベル5がDecoratorを処理する方法をサポートしているからです。これは実際に標準化された最終形式と異なる可能性があります。