当基础 class 添加扩展 class 时,如何避免循环依赖?

How do I avoid a circular dependancy when the base class adds an extended class?

我正在使用从容器 class 延伸而来的 class。 class 的每个实例本身就是一个容器,但顶级容器不是 class.

的实例

文件 1

const Command = require('Command');
class CommandManager {
    constuctor () {
        this.commands = {};
    }
    add (object) {
        const command = new Command(object);
        this.commands[command.name] = command;
    }
    get (string) {
        return this.commands[string];
    }
}

文件 2

const CommandManager = require("CommandManager");
class Command extends CommandManager {
    constructor (object) {
        super();
        //Other-code
    }
    // Class Methods
}

在运行时它应该看起来像这样:

client.commands = new CommandManager();
client.commands.add(object); // Add function also filters down adding to sub elements

或:

const command = client.commands.get(string);
command.add(object);

问题是这些文件中至少有一个以空对象结束,或者未根据所需 class 定义。我尝试遵循其他节点循环依赖解决方案的尝试没有奏效(或者我没有正确理解它们)。

目的是将 2 classes 保存在他们自己的文件中,我知道我可以通过使用相同的文件来解决问题(但这在项目中会是一个例外吗?),并且我我不确定我(或消费者)将如何从逻辑上要求它,因为他们在不同的地区。

那么我可以通过哪些方式解决我所缺少的问题?

根据 Bergi 发表的评论:

在 CommandManager 文件中使 require 延迟加载模块并允许在调用它之前解决依赖关系。

class CommandManager {
    constuctor () {
        this.commands = {};
    }
    add (object) {
        const Command = require('Command');
        const command = new Command(object);
        this.commands[command.name] = command;
    }
    get (string) {
        return this.commands[string];
    }
}