Code
typescript
function log(target: any, key: string, desc: PropertyDescriptor) {
const original = desc.value;
desc.value = function (...args: any[]) {
console.log(`Call ${key}(${args})`);
return original.apply(this, args);
};
}
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
@sealed
class Service {
@log
greet(name: string) {
return `Hello ${name}`;
}
}