我有一个项目是Task-runner,它有一个名为Task
的主类,可以完成大部分工作。尽管此类可以完成任何类型的工作,但我还是希望有一个额外的repo / npm包(如contrib包),其中包含Task的专门子类。但是这是我不知道的地方。
如果要引用我的包含基本Task
类的软件包,那么如何对它进行子分类?示例:
npm
(包含Task
)安装我的地雷npm
安装contrib软件包(需要引用Task
进行扩展)问题:
如果contrib软件包将我的软件包作为参考,它将获得Task
类的副本。但是,这将是另一类,因此instanceof
在Your project
中将不起作用。
我想到的解决方案:
Task
放入其自己的npm包中,这样就不会有循环引用了。Task
作为参数的函数,项目中的所有类都将扩展该变量,如下所示:
module.exports = function(Task) {
return {
SpecialTask: class SpecialTask extends Task { /* ... */ }
};
};
我该如何解决这个问题?什么是最优雅的解决方案?