Les décorateurs en TypeScript sont une fonctionnalité puissante qui permet d'ajouter des métadonnées ou de modifier le comportement des classes, des méthodes, des propriétés ou des paramètres. Ils sont souvent utilisés dans des frameworks comme Angular pour enrichir les composants et les services. Que vous soyez débutant ou développeur expérimenté, cet article vous guide pas à pas dans la création de vos propres décorateurs pour enrichir vos applications TypeScript.
Avant de commencer, assurez-vous de disposer des éléments suivants :
{ "compilerOptions": { "experimentalDecorators": true } }
Un décorateur est une fonction appliquée à une classe, une méthode, une propriété ou un paramètre. Précédé du symbole @, un décorateur peut modifier ou enrichir l'élément auquel il est attaché. Ses principales utilisations incluent :
Nous allons créer un décorateur qui ajoute une propriété componentName à une classe.
function Component(name: string) { return function (constructor: Function) { constructor.prototype.componentName = name; }; }
Explication :
Ce décorateur reçoit une chaîne name et l'ajoute comme propriété sur le prototype de la classe. Toutes les instances de cette classe auront accès à cette propriété.
Appliquons le décorateur à une classe.
@Component('MonComposant') class MonComposant { constructor() { console.log(`Le nom du composant est : ${this.componentName}`); } }
Créons une instance de la classe pour vérifier son fonctionnement.
const composant = new MonComposant(); // Affiche : Le nom du composant est : MonComposant
Ce décorateur surveille et journalise les modifications d'une propriété.
function Input() { return function (target: any, propertyKey: string) { let value: any; const getter = () => { return value; }; const setter = (newValue: any) => { console.log(`La valeur de ${propertyKey} a été mise à jour : ${newValue}`); value = newValue; }; Object.defineProperty(target, propertyKey, { get: getter, set: setter, enumerable: true, configurable: true, }); }; }
Explication :
Le décorateur utilise Object.defineProperty pour intercepter les modifications de la propriété. Cela permet d’ajouter une logique personnalisée, comme la journalisation des changements.
Appliquons-le à une propriété.
{ "compilerOptions": { "experimentalDecorators": true } }
Modifiez la propriété pour observer l'effet.
function Component(name: string) { return function (constructor: Function) { constructor.prototype.componentName = name; }; }
Les décorateurs en TypeScript offrent une manière élégante et puissante d'ajouter des fonctionnalités et des métadonnées à vos classes et propriétés. En suivant cet article, vous avez appris à :
Ces exemples simples montrent comment les décorateurs peuvent améliorer la lisibilité et la maintenabilité de votre code. Explorez davantage la documentation officielle TypeScript pour découvrir des applications encore plus avancées, comme l'utilisation des métadonnées réfléchies avec Reflect.metadata.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!