¿Hay alguna forma en Javascript de crear un objeto que contenga expresiones de ambas clases y subclases? Lo intenté de esta manera, pero supongo que no puedo referirme a la superclase de esta manera.
const myClasses = { 'animal': class { a; b; constructor(x, y) { this.a = x; this.a = y; } }, 'dog': class extends animal { constructor(d, e) { super(d, e); } bark () { console.log('woof!'); } } }Parece que el OP apunta a un índice de clases que se pueden instanciar en función de una clave. ¿Qué tal si define las clases como lo haría normalmente y luego consúltelas en el índice...?
class animal { a; b; constructor(x, y) { this.a = x; this.a = y; } } class dog extends animal { constructor(d, e) { super(d, e); } bark() { console.log('woof!'); } } const myClasses = { animal, dog }; const myAnimalName = 'dog'; const klass = myClasses[myAnimalName]; const myAnimal = new klass() myAnimal.bark()Se siente un poco raro, pero una solución a esto fue dividirlo en varios pasos. Si se declara la superclase, se puede hacer referencia a ella en un segundo paso, obviamente.
MDN : las expresiones de clase deben declararse antes de que puedan usarse
const myClasses = { 'animal': class { a; b; constructor(x, y) { this.a = x; this.a = y; } } } myClasses.dog = class extends myClasses.animal { constructor(d, e) { super(d, e); } bark () { console.log('woof!'); } }Si hay una manera de hacerlo en un solo paso, todavía me gustaría saber.