DEV Community

Cover image for Decorators - Decoradores
Luis Osorio
Luis Osorio

Posted on

Decorators - Decoradores

Los decoradores en TypeScript solo pueden aplicarse a elementos relacionados con clases.

No puedes decorar funciones sueltas o variables fuera de clases.

Puntos clave:

  • Son funciones que se ejecutan en tiempo de definición, no de ejecución.
  • El orden de ejecución importa. Si usas múltiples decoradores, se ejecutan de abajo hacia arriba.
  • Decoradores modernos (context) aún no están 100% estables.
  • Demasiados decoradores mal organizados pueden volver el código menos claro.

Función especial que se aplica con @.

function Log(constructor: Function) {
  console.log(`Clase decorada: ${constructor.name}`);
}

@Log
class App {
  constructor() {
    console.log("App iniciada");
  }
}

new App();
Enter fullscreen mode Exit fullscreen mode

Esto nos mostrara en consola lo siguiente:

Resultado del código anterior

También podemos agregar decoradores a las propiedades de la clase

function ReadOnly(target: any, propertyKey: string) {
  Object.defineProperty(target, propertyKey, {
    writable: false,
    configurable: false
  });
}

class App {
  @ReadOnly
  version = "1.0.0";

  constructor() {
    console.log("App iniciada");
  }
}

const app = new App();
console.log(app.version);

app.version = "2.0.0"; // No cambia
console.log(app.version);

Enter fullscreen mode Exit fullscreen mode

Si definimos decoradores personalizados, agregando parámetros, es necesario retornar un decorador para que interactúe con las ejecuciones de la clase

function Role(role: string) {
  return function (constructor: Function) {
    constructor.prototype.rol = role;
  };
}

@Role("admin")
class App {}

const app = new App() as any;
console.log(app.rol);
Enter fullscreen mode Exit fullscreen mode

Algunos casos en donde utilizarlos:

  • Útil para debugging y trazabilidad
  • Validar antes de asignar un valor
  • Controlar qué método puede ejecutar cada rol
  • Usado por frameworks como Angular y NestJS
  • Evitar repetir cálculos costosos
  • Transformación automática de datos

Guia rapida de Decoradores

Top comments (1)

Collapse
 
seo_decorator_317cc56cd75 profile image
SEO decorator

Hi everyone,

If you’re on the lookout for reliable painters and decorators Richmond, I wanted to share my experience with Adam Painting & Decorating. I recently used their team for a commercial space, and the results were genuinely impressive.
From the first visit, they were professional, punctual, and really understood what I was aiming for. They helped me choose the right colours and finishes, and their attention to detail was miles better than many decorators I’ve used in the past. Clean lines, smooth walls, and no mess left behind - exactly what you want when hiring professionals.
What I liked most was how efficiently they worked. Whether it was prepping the surfaces or applying the final coat, everything was done with care. If you're managing a business or office in the area, having dependable painters and decorators Richmond makes such a difference, especially when you need high-quality work without disruption.