TypeScript
Mixins
Buscar..
Sintaxis
- La clase BeetleGuy implementa Climbs, Bulletproof {}
- applyMixins (BeetleGuy, [Climbs, Bulletproof]);
Parámetros
Parámetro | Descripción |
---|---|
derivado | La clase que quieres usar como la clase de composición. |
baseCtors | Un conjunto de clases que se agregarán a la clase de composición. |
Observaciones
Hay tres reglas a tener en cuenta con los mixins:
- Utiliza la palabra clave
implements
, no la palabra clave deextends
cuando escribe su clase de composición - Debe tener una firma coincidente para mantener el compilador en silencio (pero no necesita ninguna implementación real, se obtendrá de la mezcla).
-
applyMixins
llamar aapplyMixins
con los argumentos correctos.
Ejemplo de Mixins
Para crear combinaciones, simplemente declare clases ligeras que se pueden usar como "comportamientos".
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.');
}
}
A continuación, puede aplicar estos comportamientos a una clase de composición:
class BeetleGuy implements Climbs, Bulletproof {
climb: () => void;
deflect: () => void;
}
applyMixins (BeetleGuy, [Climbs, Bulletproof]);
La función applyMixins
es necesaria para hacer el trabajo de composición.
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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow