TypeScript
Mixiny
Szukaj…
Składnia
- klasa BeetleGuy implementuje wspinaczki, kuloodporne {}
- ApplyMixins (BeetleGuy, [Climbs, Bulletproof]);
Parametry
Parametr | Opis |
---|---|
pochodna | Klasa, której chcesz użyć jako klasy kompozycji |
baseCtors | Tablica klas do dodania do klasy kompozycji |
Uwagi
W przypadku mixin należy pamiętać o trzech zasadach:
- Podczas pisania klasy kompozycji używasz słowa kluczowego
implements
, a nie słowa kluczowegoextends
- Musisz mieć pasującą sygnaturę, aby kompilator był cichy (ale nie potrzebuje żadnej rzeczywistej implementacji - otrzyma to z mixinu).
- Musisz wywołać
applyMixins
z poprawnymi argumentami.
Przykład mixinów
Aby stworzyć mixiny, wystarczy zadeklarować lekkie klasy, które mogą być użyte jako „zachowania”.
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.');
}
}
Następnie możesz zastosować te zachowania do klasy kompozycji:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
Funkcja applyMixins
jest potrzebna do wykonania kompozycji.
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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow