Décorateurs de Méthode & Paramètres
Un décorateur de méthode permet d'en modifier le comportement par "wrapping".
Le décorateur en exemple ci-dessous n'opère aucun changement.
const Noop = () => (target, key: string) => {
return target[key];
};
class Calculator {
@Noop()
sum(a, b) {
console.log('computing...');
return a + b;
}
}
const calculator = new Calculator();Remarquez le pattern de "currying" très fréquent dans l'implémentation de décorateurs.
La syntaxe suivante :
const Noop = () => {
return (target, key) => {
return target[key];
};
}... est identique à celle-ci :
const Noop = () => (target, key) => {
return target[key];
};A consommer avec modération.
Les décorateurs de paramètres permettent principalement d'ajouter des metadata à la classe pour que les décorateurs de méthode puissent s'en servir.
Mémorisation des résultats
Le décorateur ci-dessous construit progressivement un objet de mémorisation permettant de "mapper" les paramètres au dernier résultat obtenu afin d'éviter de refaire le même calcul inutilement.
Contract checking en runtime
Mis à jour