generated at
TypeScriptのdecorator
使用するためには、tsconfigでexperimentalDecoratorsを指定する必要がある





emitDecoratorMetadataと互換性がない


仕様の変遷





種類





decoratorは通常の高階関数として定義できる
逆に言えば、ただの関数宣言だけ見れば、それがdecoratorして使用される関数なのかどうかは判断できないmrsekut
このように定義すると、
ts
function color(value: string) { return function (target) { // .. }; }
こう使える
ts
class C { @color() method() {..} }
これ、常に必要になるわけじゃないんかmrsekut
class decoratorとかでは不要っぽい








ユースケース
ログ出力
確かにコレ良さそうmrsekut
method内に直接ログを書くんじゃなくて、decoratorを付与してログを出力できる
method内は、そのmethodに関する処理だけに集中できる
引数のvalidaiton
notEmptyStringかとか、Intかなどのvalidationができる
DI
InversifyJSがやってる

classにしか使えないの?関数に対しては使えないの?なんで?




tscofig