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

136
Vistas
Mecanografiado: tratando de llamar al método en una base abstracta con tipo derivado como parámetro

La base abstracta tiene un método que toma una base/derivada y realiza algo sobre ella. Parece que me estoy perdiendo algo con la escritura, tratando de averiguar qué.

Intento 1:

 abstract class Base { protected runFuncOnThis = (func: (baseOrDerived: Base) => void) => { func(this); }; } class Derived extends Base { public doIt = () => { this.runFuncOnThis((derived: Derived) => { // ERROR HERE console.log(derived); }); }; }

Error: el argumento de tipo '(derivado: Derivado) => vacío' no se puede asignar al parámetro de tipo '(baseOrDerived: Base) => vacío'. Los tipos de parámetros 'derivados' y 'baseOrDerived' son incompatibles. Falta la propiedad 'doIt' en el tipo 'Base' pero se requiere en el tipo 'Derivado'.ts(2345)

Intento 2:

 abstract class Base2 { protected runFuncOnThis = <T extends Base2>(func: (baseOrDerived: T) => void) => { func(this); // ERROR HERE }; } class Derived2 extends Base2 { public doIt = () => { this.runFuncOnThis((derived: Derived2) => { console.log(derived); }); }; }

Error: el argumento de tipo 'esto' no se puede asignar al parámetro de tipo 'T'. 'esto' es asignable a la restricción de tipo 'T', pero 'T' podría instanciarse con un subtipo diferente de restricción 'Base2'.ts(2345)

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

0

patio de juegos

Dado que está usando this en una función de flecha, significa que this es el contexto actual ( Base ) mientras que func quiere Derived como su argumento. Cambie el tipo de método a una función normal (que tiene su propio contexto) y this como T extends Base para satisfacer el argumento de func.

 abstract class Base { protected runFuncOnThis<T extends Base>(this: T, func: (baseOrDerived: T) => void) { func(this); }; } class Derived extends Base { public doIt = () => { this.runFuncOnThis((derived) => { console.log(derived); }); }; } class Derived2 extends Base { public doIt = () => { this.runFuncOnThis((derived) => { console.log(derived); }); }; public someProperty = 123; }
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