¿Cómo resuelvo una dependencia circular en módulos ES6 con una función de fábrica?
Quiero escribir algo como esto dentro de misrc/core/Chessman.js
archivo:
import King from './chessmen/King'
class Chessman {
static factory(side, quality) {
switch(quality) {
case 'king' : return new King(side) break
// ... other qualities
}
constructor(side) { this.side = side }
cast(position, ref) { }
run(position, startRef, endRef) {}
}
y dentro de misrc/core/chessmen/King.js
archivo:
import Chessman from '../Chessman'
class King extends Chessman {
constructor(side) {
super(side)
this.iterative = false // true for Queens, Rooks and Bishop
this.directions = [
'up', 'up+right', 'right', 'right+down',
'down', 'down+left', 'left', 'left+top'
]
}
// overrides parent behavior
cast(position, ref) {}
run(position, startRef, endRef) {}
}
Pero lamentablemente recibo el error (durante la prueba) con Karma, jazmín y babel
TypeError: la súper expresión debe ser nula o una función, no indefinida en src / core / chessmen / King.js: 57
Y no hay línea 57 por el momento enKing.js
!