Como resolvo uma dependência circular nos módulos ES6 com uma função de fábrica?
Eu quero escrever algo assim dentro do meusrc/core/Chessman.js
Arquivo:
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) {}
}
e dentro do meusrc/core/chessmen/King.js
Arquivo:
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) {}
}
Mas, infelizmente, recebo o erro (durante o teste) com Karma, jasmim e babel
TypeError: A super expressão deve ser nula ou uma função, não indefinida em src / core / chessmen / King.js: 57
E não há linha 57 no momento emKing.js
!