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 de extends 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 a applyMixins 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