ES6 / ES7 расширяют класс с тем же именем - PullRequest
0 голосов
/ 10 января 2020

Поскольку условный импорт модулей еще не реализован, как я могу расширить или переопределить тот же класс:

// 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, поэтому я решил включить ThirdClass в index-extended, в качестве бонуса MainExtended.

Но я все еще хочу знать, есть ли другой способ.

1 Ответ

2 голосов
/ 10 января 2020

Как сказал ВЛАЗ в комментариях, я не на 100% уверен в том, что вы спрашиваете, но не могли бы вы сделать что-то подобное?

Решение 1

class MyClass {
  constructor(_main){
    myMain = _main;
  }
}

const regularMain = new MyClass(new Main());
const extendedMain = new MyClass(new MainExtended());
...