
318
4
부
한 걸음 더
원래의
greet
메서드를 호출하기 전에
descriptor
.
value
를 수정해
greet
메서드를 데코레
이팅합니다.
function logOnCall(target: any, key: string, descriptor: PropertyDescriptor) {
const original = descriptor.value;
console.log("[logOnCall] I am decorating", target.constructor.name);
descriptor.value = function (...args: unknown[]) {
console.log('[descriptor.value] Calling '${key}' with:', ...args);
return original.call(this, ...args);
}
}
class Greeter {
@logOnCall
greet(message: string) {
console.log('[greet] Hello, ${message}!');
}
}
new Greeter().greet("you");
// Output log:// Output log:
// "[logOnCall] I am decorating", "Greeter"// "[logOnCall] I am decorating", "Greeter" ...