Appearance
Les décorateurs
Les décorateurs en TypeScript sont une fonctionnalité expérimentale qui permet d'annoter et de modifier des classes et des membres de classe (propriétés, méthodes). Inspirés par des langages comme Python et Java, les décorateurs offrent un moyen de faire de la métaprogrammation, c'est-à-dire de programmer qui modifie ou étend le comportement du code au moment de sa définition plutôt qu'à l'exécution.
Utilisation de Décorateurs
Pour utiliser les décorateurs en TypeScript, vous devez activer l'option experimentalDecorators
dans votre fichier tsconfig.json
:
json
{
"compilerOptions": {
"experimentalDecorators": true,
//...
}
}
Syntaxe des Décorateurs
Un décorateur est simplement une fonction que vous appliquez à une déclaration de classe, de méthode, d'accessoire, de propriété ou de paramètre. En TypeScript, les décorateurs utilisent le caractère @
suivi du nom de la fonction décorateur.
typescript
function decorateurClasse(constructor: Function) {
// logique du décorateur
}
@decorateurClasse
class MaClasse {
// ...
}
Types de Décorateurs
Décorateurs de Classe : Appliqués à la déclaration d'une classe.
typescript@decorateurClasse class MaClasse { }
Décorateurs de Méthode : Appliqués aux méthodes d'une classe.
typescriptclass MaClasse { @decorateurMethode maMethode() { } }
Décorateurs d'Accesseur : Appliqués aux accesseurs (getters/setters) d'une classe.
typescriptclass MaClasse { private _maProp: string; @decorateurAccesseur get maProp() { return this._maProp; } }
Décorateurs de Propriété : Appliqués aux propriétés d'une classe.
typescriptclass MaClasse { @decorateurPropriete maProp: string; }
Décorateurs de Paramètre : Appliqués aux paramètres des méthodes ou des constructeurs.
typescriptclass MaClasse { maMethode(@decorateurParam param: string) { } }
Exemple de Décorateur
Voici un exemple simple de décorateur de classe qui ajoute une propriété à la classe :
typescript
function AjouterPropriete(target: Function) {
target.prototype.nouvellePropriete = "valeur";
}
@AjouterPropriete
class MaClasse { }
let obj = new MaClasse();
console.log(obj.nouvellePropriete); // "valeur"
Avertissement
Notez que les décorateurs sont une fonctionnalité expérimentale en TypeScript et leur comportement peut changer dans les futures versions. Ils ne font pas encore partie du standard JavaScript, mais sont proposés pour une future version d'ECMAScript.
Les décorateurs offrent un moyen puissant d'ajouter des fonctionnalités et des comportements à des classes et des membres de classe en TypeScript, et ils sont largement utilisés dans des frameworks populaires comme Angular pour des fonctionnalités telles que l'injection de dépendances, la définition de métadonnées, et plus encore.