#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