TypescriptのDecoratorが正しく動かない

実現したいこと

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 コメント