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 !

questionAnswers(2)

yourAnswerToTheQuestion