TypeScript
mixins
Ricerca…
Sintassi
- classe BeetleGuy implementa Climbs, Bulletproof {}
- applyMixins (BeetleGuy, [Climbs, Bulletproof]);
Parametri
Parametro | Descrizione |
---|---|
derivedCtor | La classe che si desidera utilizzare come classe di composizione |
baseCtors | Una serie di classi da aggiungere alla classe di composizione |
Osservazioni
Ci sono tre regole da tenere a mente con i mixin:
- Si utilizza la parola chiave
implements
, non la parola chiaveextends
quando si scrive la classe di composizione - È necessario disporre di una firma corrispondente per mantenere il compilatore silenzioso (ma non ha bisogno di alcuna implementazione reale - lo otterrà dal mixin).
- Devi chiamare
applyMixins
con gli argomenti corretti.
Esempio di Mixins
Per creare mixin, semplicemente dichiarare classi leggere che possono essere usate come "comportamenti".
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.');
}
}
È quindi possibile applicare questi comportamenti a una classe di composizione:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
La funzione applyMixins
è necessaria per eseguire il lavoro di composizione.
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow