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 het extends 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