Estaba tratando de implementar un patrón Builder en Javascript usando la modularidad, donde me vi atrapado en una situación similar a las dependencias circulares. Mi estructura de archivos se parece a esto,
índice.js
import PersonBuilder from "./PersonBuilder.js"; let pb = new PersonBuilder(); let person = pb.lives.in('jaipur').at('ajmer Road') .age.of(32).build();Persona.js
class Person { constructor() { this.city = this.street = this.name = ""; this.age = 0; } toString(){ return `${this.name} from ${this.city} lives at ${this.street} is ${this.age} years old`; } } export default Person;PersonBuilder.js
import Person from "./Person.js"; import PersonAgeBuilder from "./PersonAgeBuilder.js"; import PersonAddressBuilder from "./PersonAddressBuilder.js"; class PersonBuilder { constructor(person = new Person) { this.Person = person; } get lives() { return new PersonAddressBuilder(this.person); } get age() { return new PersonAgeBuilder(this.person); } build() { return this.person; } } export default PersonBuilder;PersonAddressBuilder.js
import PersonBuilder from "./PersonBuilder.js"; class PersonAddressBuilder extends PersonBuilder { constructor(person) { super(person); } in(city){ this.person.city = city; return this; } at(street) { this.person.street = street; return this; } } export default PersonAddressBuilder;PersonAgeBuilder.js
import PersonBuilder from "./PersonBuilder.js"; class PersonAgeBuilder extends PersonBuilder { constructor(person) { super(person); } of(age){ this.person.age = age; } } export default PersonAgeBuilder;Cuando llamo a index.js en mi navegador, aparece el siguiente error:
Error de referencia no detectado: no se puede acceder a 'PersonBuilder' antes de la inicialización en PersonAgeBuilder.js:4
¿Como puedo resolver esto?