【发布时间】:2020-04-28 11:48:18
【问题描述】:
由于模块的条件导入还没有实现,我该如何扩展或覆盖同一个类:
// I have a main class
// main.js
export default class Main {}
// Main class is used by myClass
class myClass {
constructor(){
new Main()
}
}
// I have an extended main class
// main-extended.js
export default class MainExtended extends Main {}
// the MainExtended is now used by myClass
export class myClass {
constructor(){
new MainExtended()
}
}
// third-class.js
// now I need to do this with any class I can find,
// preferably with the extended version of both, if both defined
export default class ThirdClass {
constructor(...args){
return new myClass(...args)
}
}
// destinations
// index.js
import Main, {myClass} from main.js
import ThirdClass from third-class.js
// index-extended.js
import MainExtended, {myClass} from main-extended.js
import ThirdClass from third-class.js
问题是,由于某种原因,index.js 编译后还包含myClass 调用MainExtended,所以我决定只在index-extended 中包含ThirdClass,作为MainExtended 的附加功能。
但我仍然想知道是否有其他方法。
【问题讨论】:
-
为什么需要用同名的子类覆盖一个类?好像an XY problem
-
因为我有 2 个单独的目标用于这 2 个需要具有相同名称的函数。让我用一些信息更新问题,我似乎必须解释一些东西。
-
抱歉,您更新的代码无法进一步说明您真正想要什么。如果有的话,我比以前更困惑了。
-
Because I have 2 separate destinations for these 2 functions that need to have same name。你想创建一个接受多种类型子类的接口吗?请发布您的实际问题,以提供有关为什么需要两个具有相同名称的类的上下文;几乎可以肯定,有更好的解决方案。 -
@ggorlen 更新问题,请查看。我认为你在做某事。
标签: javascript class ecmascript-6 extends