如何让人们为包装提供子类

时间:2018-07-20 09:26:36

标签: npm package circular-reference

我有一个项目是Task-runner,它有一个名为Task的主类,可以完成大部分工作。尽管此类可以完成任何类型的工作,但我还是希望有一个额外的repo / npm包(如contrib包),其中包含Task的专门子类。但是这是我不知道的地方。

如果要引用我的包含基本Task类的软件包,那么如何对它进行子分类?示例:

  • 您的项目
    • 通过npm(包含Task)安装我的地雷
    • 通过npm安装contrib软件包(需要引用Task进行扩展)

问题: 如果contrib软件包将我的软件包作为参考,它将获得Task类的副本。但是,这将是另一类,因此instanceofYour project中将不起作用。

我想到的解决方案:

  • Task放入其自己的npm包中,这样就不会有循环引用了。
  • 让contrib-package导出一个以Task作为参数的函数,项目中的所有类都将扩展该变量,如下所示: module.exports = function(Task) { return { SpecialTask: class SpecialTask extends Task { /* ... */ } }; };

我该如何解决这个问题?什么是最优雅的解决方案?

0 个答案:

没有答案