1 min read 132 words Updated Oct 03, 2026 Created Oct 03, 2026
#TypeScript#review

Decorators can inject additional logic into classes or methods without changing the core logic of the code.

Decorates are only available in TypeScript. In JavaScript, their functionality is quite different.
Apart from the JS / TS world, similar functionality exists in other programming languages.

Class-decorators differ from decorators on methods.

// class decorator 
function logged<T extends { new (...args: any[]): {} }>(constructor: T) {
  return class extends constructor {
    constructor(...args: any[]) {
      console.log(`Creating new instance of ${constructor.name} with arguments: ${JSON.stringify(args)}`);
      super(...args);
    }
  };
}

@logged
class Calculator {
  constructor(public name: string) {}

  add(a: number, b: number): number {
    return a + b;
  }
}

const calc = new Calculator("MyCalculator");
calc.add(5, 3);

Resources

For more, see the Decorator pattern, which is related but no necisarily the same.

Official docs: https://www.typescriptlang.org/docs/handbook/decorators.html