TypeScript
Mixins
Sök…
Syntax
- klass BeetleGuy implementerar Climbs, Bulletproof {}
- ApplyMixins (BeetleGuy, [Climbs, Bulletproof]);
parametrar
Parameter | Beskrivning |
---|---|
derivedCtor | Klassen som du vill använda som kompositionsklass |
baseCtors | En rad klasser som ska läggas till i kompositionsklassen |
Anmärkningar
Det finns tre regler att tänka på med mixins:
- Du använder
implements
sökord inteextends
nyckelordet när du skriver din komposition klass - Du måste ha en matchande signatur för att hålla kompilatorn tyst (men den behöver inte någon verklig implementering - det kommer att få det från mixin).
- Du måste ringa
applyMixins
med rätt argument.
Exempel på Mixins
För att skapa mixins, förklar helt enkelt lätta klasser som kan användas som "beteenden".
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.');
}
}
Du kan sedan tillämpa dessa beteenden i en kompositionsklass:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
applyMixins
funktionen behövs för att utföra kompositionerna.
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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow