TypeScript
mixins
Zoeken…
Syntaxis
- class BeetleGuy implementeert Climbs, Bulletproof {}
- applyMixins (BeetleGuy, [Climbs, Bulletproof]);
parameters
Parameter | Beschrijving |
---|---|
derivedCtor | De klasse die u wilt gebruiken als de compositieklasse |
baseCtors | Een reeks klassen die aan de samenstellingsklasse moet worden toegevoegd |
Opmerkingen
Er zijn drie regels waarmee u rekening moet houden bij mixins:
- U gebruikt het sleutelwoord
implements
, niet hetextends
sleutelwoord wanneer u uw compositieklasse schrijft - U moet een bijpassende handtekening hebben om de compiler stil te houden (maar het heeft geen echte implementatie nodig - dat krijgt het van de mixin).
- U moet
applyMixins
met de juiste argumenten aanroepen.
Voorbeeld van mixins
Om mixins te maken, verklaar je eenvoudig lichtgewicht klassen die kunnen worden gebruikt als "gedrag".
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.');
}
}
U kunt deze gedragingen vervolgens toepassen op een compositieklasse:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
De functie applyMixins
is nodig om het werk van de compositie te doen.
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow