実現したいこと
TypescriptのDecoratorを使用しようとしていますが、正しく動きません。
Decoratorにしているfunctionを呼び出すことはできているようですが、returnしているFunctionを実行しているわけではないようです。
下記を参考にしています。
Announcing TypeScript 5.0#decorators
発生している問題・分からないこと
下記Personクラスを、このように実行します。
Typescript
1var person = new Person("John");2p.greet();
loggedMethod called
Hello, my name is John.
は出力されますが、
LOG: Entering method.
LOG: Exiting method.
が出力されません。
該当のソースコード
Typescript
1export default class Person {2 name: string;3 constructor(name: string) {4 this.name = name;5 }6 7 @loggedMethod 8 greet() {9 console.log(`Hello, my name is ${this.name}.`);10 }11}12 13function loggedMethod(originalMethod: any, _context: any) {14 console.log("loggedMethod called");15 function replacementMethod(this: any, ...args: any[]) {16 console.log("LOG: Entering method.");17 const result = originalMethod.call(this, ...args);18 console.log("LOG: Exiting method.");19 return result;20 }21 22 return replacementMethod;23}24
試したこと・調べたこと
上記の詳細・結果
TypeScript5で導入されたStage 3のDecoratorを眺めてみる
DenoでTypeScriptのDecoratorに入門してみる
上記も参考にしましたが、同じような内容で解決に至りませんでした。
補足
Typescript: 5.3.3
0 コメント