Skip to main content
Brave Programmer Logo

BraveProgrammer

BraveProgrammer

HomeProjectsBlogsCoursesLessonsAbout

Site footer

BraveProgrammer

Free coding courses, practical tutorials, and real projects from BraveProgrammer. Learn web development with React, Next.js, and TypeScript.

Navigation

  • Home
  • Projects
  • Blogs
  • Courses

Resources

  • About
  • Lessons

© 2026 BraveProgrammer. All rights reserved.

  1. Courses
  2. /
  3. TypeScript Mastery

Lesson 20 of 56 · Typescript

Decorators (Experimental) – Class & Method

Duration: 20 minutes

Enabling Decorators

Add to tsconfig.json:

"experimentalDecorators": true,
"emitDecoratorMetadata": true

Class Decorator Example

function sealed(constructor: Function) {
  Object.seal(constructor);
  Object.seal(constructor.prototype);
}

@sealed
class Service {
  // …
}

Method Decorator – Logging

function log(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
  const original = descriptor.value;
  descriptor.value = function (...args: any[]) {
    console.log(`Calling ${propertyKey} with`, args);
    return original.apply(this, args);
  };
}

class MathOps {
  @log
  add(a: number, b: number) {
    return a + b;
  }
}

Warning

Decorators are stage‑2 proposal; they may change. Use them primarily in frameworks (Angular, NestJS).

Previous: Accessors (get/set) & Readonly PropertiesNext: Modules – ES6 Imports/Exports & Namespaces