Lingua-e
JavaScript

¿Qué significa Class Extends Non-Constructor?

← Errores

Este TypeError se lanza cuando el valor después de 'extends' no es una función constructora o clase. JavaScript permite cualquier expresión después de 'extends', por lo que una variable que contiene null, undefined o un objeto plano causará este error en el momento de la definición de la clase.

Por qué ocurre

  • La variable de la clase padre es null porque no se importó correctamente.
  • Una dependencia circular hace que el módulo padre exporte undefined en el momento de la evaluación.
  • Extender un valor devuelto por una función factory que devolvió null en caso de fallo.
  • Un error tipográfico en el nombre de importación resuelve a undefined.

Ejemplos

JavaScript

Código que causa el error

const Base = null;

class Child extends Base {
  greet() { return "hi"; }
}

Error en la terminal

TypeError: Class extends value null is not a constructor or null

Cómo solucionarlo

Verifica que el valor que estás extendiendo sea una clase o función constructora. Depura las importaciones circulares si el padre es undefined en el momento de la evaluación. Agrega una aserción en tiempo de ejecución: if (typeof Base !== 'function') throw new Error('Base is not a constructor').

Código corregido

class Base {
  greet() { return "hello"; }
}

class Child extends Base {
  greet() { return super.greet() + " there"; }
}

Errores relacionados

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis