Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

163
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!