Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

202
Vistas
¿Cómo puedo extender varias clases en mecanografiado?

Si tengo dos clases, ¿es posible crear una tercera clase que amplíe ambas?

 abstract class A { name age protected abstract print() } abstract class B { name age } // class C needs to inherit from both of the above classes class C extends A , B { }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sí, dependiendo de los requisitos hay varias formas de hacerlo. Dadas las clases A y B :

 class A { constructor(public i: number){} foo() { return 123; } } class B { constructor(public name: string){} bar() { return "Hello from B!"; } }

puede hacer cualquiera de las siguientes y hacer que simplemente funcione (por algún valor de solo trabajo):

  1. Herede una clase, implemente la otra como una interfaz (en TypeScript, cualquier clase puede tratarse como una interfaz):

     class Cv1 extends B implements A { /* implement A-as-interface here */ }
  2. Cree un alias de tipo para A & B e implemente el alias de tipo (por ejemplo, trate ambas clases como interfaces):

     type AandB = A & B; class Cv2 implements AandB { constructor(public i: number, public name: string) {} foo(...args: []) { return A.prototype.foo.apply(this, args); } bar() { return "Cv2 says GOODBYE!"; } }
  3. Mezcle ambas clases y herede de la clase mixta:

     // Exercise for the reader: do it without any function mixin(a: any, b: any): any { // Choice: Should isA apply to either mixin? Should it apply to neither? const aNotB = Object.defineProperties(Object.create(a.prototype), Object.getOwnPropertyDescriptors(b.prototype)); const shadowClass: any = function shadowClass(){} shadowClass.prototype = aNotB; class mixinImpl extends shadowClass {} return mixinImpl; } class Cv3 extends mixin(A, B) { }

Emptor de advertencia

Hay limitaciones con esta técnica. Por ejemplo, si B tiene una cadena de prototipos propia (p. ej., B extends BPrime y BPrime extends BPrimordial , etc.), ninguno de los métodos y propiedades de BPrime y BPrimordial se copiarán (puede recorrer la cadena de prototipos usted mismo en la clase tiempo de construcción para evitar esto si eso es lo que quiere hacer). Además, instanceof no funcionará con ninguno de los implements o técnicas .assign (por ejemplo anInstanceOfC instanceof B será false usando cualquiera de las técnicas anteriores).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda