У меня много классов, но по этому вопросу я немного упрощу это.
class A {
}
class B extends A {
}
class C extends A {
}
class D extends C {
}
Теперь мой вопрос: как вы получаете список (всех, а не только прямых) детей класса? Таким образом, A.getChildren()
будет [B, C, D]
и C.getChildren()
будет [D]
. Кстати, я ищу только чистые решения для JavaScript.
Возможно, это даже не возможно, и мне нужно подходить к этому совершенно по-другому, например, регистрировать каждый класс в своем родительском классе.
Итак, есть ли простая функция (написанная или просто встроенная), которая может это сделать, и если это даже не возможно, каким другим способом я должен решить эту проблему?
Если у вас есть контроль над конструктором A
и если каждый класс создается хотя бы один раз, вы можете поместить строку в конструктор, который добавляет дочерний класс в Set
:
const classes = new Set();
class A {
constructor() {
classes.add(this.constructor);
}
}
class B extends A {
}
class C extends A {
}
class D extends C {
}
new B();
new B();
new C();
new D();
console.log([...classes]);