🟦 TypeScript Decorators

Decorators let you add metadata or modify classes, methods, and properties dynamically — a powerful feature for clean, reusable code.

📚 Example Code: Class Decorator

Console output will appear here...
💡 Enable experimentalDecorators in your tsconfig.json to use decorators.

🔧 Decorator Types

📦 Example: Method Decorator

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);