Динамическое внедрение объектов в переменную во время выполнения

#javascript #typescript

#javascript #typescript

Вопрос:

Возможно ли динамически добавлять классы к уже назначенной переменной во время выполнения. Вот пример для иллюстрации:

 export class Bar { }
export class Foo { }
export class Qux { }

export let Class = {
  FooClass : Foo,
  BarClass : Bar
};

export class ParentClass {
  public addToClass(className : string, classType : any) {
     Class.add(className, classType); // this obviously doesn't work but somethhing like this
  }
  public getClasses() {
     return Class;
  }
}
  

Во время выполнения я хотел бы вызвать

 ParentClass pc = new ParentClass();
ps.addToClass('QuxClass', Qux);
ps.getClasses(); // Should return {FooClass, BarClass, QuxClass}
  

Я знаю, что это возможно с помощью Map / Dictionary, но мне нужно заставить его работать для этого держателя объекта, иначе потребуется полный рефакторинг.

Комментарии:

1. Если вы думаете о том, что вы называете классом , как о том, чем он на самом деле является в JavaScript — объектом , то вы обнаружите, что добавление объектов к другим объектам вполне нормально в JavaScript. Выбранный вами подход необычен, но его можно заставить работать.

2. заменить Class.add(className, classType) на Class[className] = classType

3. О, боже, неужели это так просто !!… Спасибо. много Харела! это работает

Ответ №1:

Спасибо @kharel за решение!!

ссылка: replace Class.add(className, classType) with Class[className] = classType