https://github.com/tc39/proposal-decorators#class-methods
[[クラス (JavaScript)|クラス]]の[[メソッド (JavaScript)|メソッド]]に対して設定する[[デコレーター (JavaScript)|デコレーター]]。
サンプルコードは[[TypeScript]]の[[デコレーター (TypeScript)|デコレーター]]。
```ts
function logger(value: Function, context: ClassMethodDecoratorContext) {
console.log("Execute logger");
return function (this: unknown, ...args: unknown[]) {
console.log(`Execute ${context.name as string}(${args.join(",")})`);
return value.call(this, ...args);
};
}
class Human {
public constructor(
public id: number,
public name: string,
) {}
@logger
print(prefix: string, suffix: string) {
console.log(`${prefix} << ${this.id}: ${this.name} >> ${suffix}`);
}
}
console.log("Before initialize Human");
const h = new Human(180702, "hrks");
console.log("After initialize Human");
console.log("Before print");
h.print("👺", "👋");
console.log("After print");
```
```console
Execute logger
Before initialize Human
After initialize Human
Before print
Execute print(👺,👋)
👺 << 180702: hrks >> 👋
After print
```