Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda