TypeScript
Mixins
Suche…
Syntax
- Klasse BeetleGuy implementiert Climbs, Bulletproof {}
- applyMixins (BeetleGuy, [Climbs, Bulletproof]);
Parameter
Parameter | Beschreibung |
---|---|
AbgeleiteterCtor | Die Klasse, die Sie als Kompositionsklasse verwenden möchten |
baseCtors | Ein Array von Klassen, die der Kompositionsklasse hinzugefügt werden sollen |
Bemerkungen
Bei Mixins sind drei Regeln zu beachten:
- Sie verwenden das
implements
Schlüsselwort, nicht dasextends
Schlüsselwort, wenn Sie Ihre Kompositionsklasse schreiben - Sie benötigen eine übereinstimmende Signatur, um den Compiler leise zu halten (aber es ist keine echte Implementierung erforderlich - dies wird durch das Mixin erreicht).
- Sie müssen
applyMixins
mit den richtigen Argumenten aufrufen.
Beispiel für Mixins
Um Mixins zu erstellen, deklarieren Sie einfach leichte Klassen, die als "Verhalten" verwendet werden können.
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.');
}
}
Sie können diese Verhalten auf eine Kompositionsklasse anwenden:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
Die Funktion applyMixins
ist für die Kompositionsarbeit erforderlich.
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow