Decorators let you add metadata or modify classes, methods, and properties dynamically — a powerful feature for clean, reusable code.
experimentalDecorators
in your tsconfig.json
to use decorators.
function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Calling ${propertyKey} with`, args); const result = originalMethod.apply(this, args); console.log(`Result:`, result); return result; }; return descriptor; } class Calculator { @log add(x: number, y: number) { return x + y; } } const calc = new Calculator(); calc.add(5, 3);