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

103
Vistas
Cómo implementar una clase abstracta con un método abstracto en Angular

Tengo una pregunta quizás trivial, pero no puedo entender cómo puedo usar los métodos de una clase abstracta basada solo en llamarla y elegir la anulación correcta según el tipo de valor que tengo como entrada.

Por ejemplo, si tengo algo como esto:

 export abstract class Parent { constructor( public type: View ){} abstract getSource(): string | string[] } export class Child1 extends Parent { getSource(): string { return this.type.view1 } } export class Child2 extends Parent { getSource(): string[] { return this.type.view2 } }

Y quería llamar a la clase abstracta Parent y, según el tipo, averiguar si usar la función en la clase Child1 o Child2. Pensé que podrías hacerlo así:

 export class AngularComponent { public _VieweSource: string | string[]; @Input() set data(type: View) { // here i need to return Child1.getSource() or Child2.getSource() // not calling new Child1(type).getSource() // but something like this: Parent(type).getSource() --> Child1 if type.view1=string || Child2 if type.view2=string[] } }

el tipo de View es este:

 {type: "simple", view1: "hello world"} || {type: "complex", view2:["hello", "world"]}

Lo siento si la pregunta es incorrecta, si hay alguna pregunta puedo responder. Gracias por adelantado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema es que está tratando de elegir qué clase usar, según los valores en type . No debe intentar dejar que la herencia decida qué clase elegir, se crea una declaración if simple para eso.

 export class AngularComponent { public _VieweSource: string | string[]; @Input() set data(type: View) { let obj: Parent; if (type.view1 && typeof type.view1 === 'string'){ obj = new Child1(type); } else if(type.view2 && type.view2 instanceof Array){ obj = new Child2(type); } obj.getSource(); } }
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