Decorator (legacy + stage 3)
TypeScript 🔴 SeniorDéfinition
Syntaxe @décorateur pour modifier ou annoter une classe et ses membres. TypeScript compile la version standard depuis la 5.0 (16 mars 2023) et les métadonnées (Symbol.metadata) depuis la 5.2, en plus des décorateurs historiques (experimentalDecorators). Côté TC39, la proposition Decorators figure au Stage 2.7 dans le tableau officiel au 27 septembre 2026 (dernière présentation : mai 2026) : elle n'est donc pas encore dans ECMAScript.
Analogie
Comme un cadre autour d'un tableau — il enveloppe l'oeuvre sans la modifier, en ajoutant du contexte.
Exemple de code
// Décorateur standard (TS 5.0+), sans experimentalDecorators
function log<T extends (...a: any[]) => any>(
cible: T, ctx: ClassMethodDecoratorContext
) {
return function (this: unknown, ...args: any[]) {
console.log(`appel ${String(ctx.name)}`);
return cible.apply(this, args);
} as T;
}
class Api {
@log salut() { return 'hi'; }
}
Cas d'usage
Programmation orientée aspect (journalisation, autorisations, validation) dans Angular, NestJS ou TypeORM. Le mot-clé accessor (TS 4.9) crée un champ décorable avec getter/setter.
Anti-pattern
Termes liés
Sources
Fiche mise à jour le 2026-09-27