TypeScript
Mixins
Recherche…
Syntaxe
- classe BeetleGuy implémente Climbs, Bulletproof {}
- appliquerMixines (BeetleGuy, [Climbs, Bulletproof]);
Paramètres
Paramètre | La description |
---|---|
dérivéCtor | La classe que vous souhaitez utiliser comme classe de composition |
baseCtors | Un tableau de classes à ajouter à la classe de composition |
Remarques
Il y a trois règles à prendre en compte avec les mixins:
- Vous utilisez le mot-clé
implements
, pas le motextends
cléextends
lorsque vous écrivez votre classe de composition - Vous devez avoir une signature correspondante pour que le compilateur reste silencieux (mais il ne nécessite aucune implémentation réelle: il le récupérera depuis le mixin).
- Vous devez appeler
applyMixins
avec les arguments corrects.
Exemple de mixins
Pour créer des mixins, déclarez simplement des classes légères pouvant être utilisées comme "comportements".
class Flies {
fly() {
alert('Is it a bird? Is it a plane?');
}
}
class Climbs {
climb() {
alert('My spider-sense is tingling.');
}
}
class Bulletproof {
deflect() {
alert('My wings are a shield of steel.');
}
}
Vous pouvez ensuite appliquer ces comportements à une classe de composition:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
La fonction applyMixins
est nécessaire pour effectuer le travail de composition.
function applyMixins(derivedCtor: any, baseCtors: any[]) {
baseCtors.forEach(baseCtor => {
Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
if (name !== 'constructor') {
derivedCtor.prototype[name] = baseCtor.prototype[name];
}
});
});
}
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow