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

301
Vistas
Texto mecanografiado: llamar a la función de flecha de una clase secundaria en una clase principal abstracta arroja un error

Aquí está el código simple. Necesito usar la función de flecha hello() por razones en la clase secundaria.

El código arroja un error cuando llamo a the.greeting() en el constructor de la clase principal:

index.ts:29 TypeError no capturado: this.hello no es una función en Child.greeting ...

Sin embargo, el problema no ocurre cuando uso la función regular, sino que debo usar la función de flecha.

Por favor, dime cuál es el problema y cómo solucionarlo.

 abstract class Parent{ constructor(){ this.greeting(); } abstract hello(); greeting(){ this.hello(); } } class Child extends Parent{ hello = ()=>{ console.log('hello there'); } } const child = new Child();
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La forma en que funciona la propiedad hello en Child es efectivamente mediante el lenguaje que agrega un constructor a Child que dice:

 constructor() { this.hello = () => ... }

Child constructor secundario no se ejecuta hasta que el Parent haya terminado, por lo que en el momento en que se Parent el constructor principal, aún no se ha asignado el hello . Por eso explota. (Algunos otros lenguajes le impiden llamar a métodos virtuales desde dentro de un constructor de clase base por la misma razón).

(¿Por qué 'necesita' hacer hello una función de flecha?)

Arreglarlo es un poco complicado. Si desea que se pueda llamar desde el Parent , simplemente no puede convertirlo en una función de flecha de inmediato.

¿Presumiblemente necesita usar una función de flecha porque a veces desea que hello funcione como una función separable (es decir, llamada como un método simple sin ser una función)? Si es así, simplemente puede enlazarlo en use , usando child.hello.bind(child) cuando lo necesite.

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