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

162
Vistas
importar clase secundaria dentro de clase principal en javascript

Tengo una jerarquía de clases, como Parent , Child1 que extiende Parent, Child2 , etc. Parent almacena una serie de elementos secundarios y necesito importar Child1 y Child2 dentro de Parent .

Obviamente, eso conduce a una dependencia circular y se produce al intentar crear Child1 o Child 2 con el siguiente error:

 TypeError: Super expression must either be null or a function

¿Cuáles son las opciones para resolver eso?

Por ejemplo, considere la siguiente estructura:

padre.js

 export default class Parent { itemArray = [] }

niño1.js

 import Parent from "./parent.js" export default class Child1 extends Parent { }

niño2.js

 import Parent from "./parent.js" export default class Child2 extends Parent { }

itemArray almacena recursivamente Child1 o Child2

Ahora necesito escribir anotar el itemArray para que parent.js se vuelva como a continuación:

padre.js

 import Child1 from "./child1" import Child2 from "./child2" export default class Parent { @Types(() => [Child1, Child2]) itemArray = [] }

Esta anotación permite asignar la clase correcta a cada elemento de la matriz cuando el objeto final se construye a partir de un objeto simple. Pero esos son los detalles. La pregunta es:

¿Cómo permitir tal estructura para que no frene toda la jerarquía?

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

0

La solución es simple y clara de entender. La idea detrás de la solución es importar clases jerárquicas en un módulo diferente.

 // internal.js (New Js File) // This module imports and exports // Parent and Child classes will import classes from here. export { Parent } from "./parent.js"; export { Child1 } from "./child1.js"; export { Child2 } from "./child2.js";

Y puede importar la clase requerida desde 'internal.js'. Como ejemplo:

 // parent.js import { Child1 } from "./internal.js"; import { Child2 } from "./internal.js"; export class Parent { // @Types annotation method here.. itemArray = []; }

Producción:

 // index.js file to output result import { Parent } from "./internal.js"; import { Child1 } from "./internal.js"; import { Child2 } from "./internal.js"; var child1 = new Child1(); var child2 = new Child2(); var parent = new Parent(); parent.itemArray.push(child1); parent.itemArray.push(child2); console.log(parent.itemArray.length); //it prints '2'
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