У меня есть один базовый класс и подкласс. Я хочу, чтобы у моих типов классов был статический метод, который идентифицирует его по строке. (Таким образом, я могу выполнить поиск в объекте для обработчиков типа. Я могу вставить класс непосредственно в него, но преобразует весь источник класса в строку и использует его в качестве ключа, что кажется неоптимальным.)
Мне нужно:
- обнаружение присутствия суперкласса
- позвоните
super.id()
, затем добавьте свой id()
- если нет супер, просто отправь мою
id()
Вот как я могу представить код для написания, но super.id
не определен, поэтому if
всегда завершается ошибкой. Проверка на if (super) {}
также завершается с ошибкой синтаксиса, а super.id()
завершается сбоем, поскольку это "не функция".
class Y {
static id() {
if (super.id) {
return `${super.id()}-${this.name}`;
}
else {
return this.name;
}
}
}
class YY extends Y {}
// Outputs "Y YY", but I want "Y Y-YY"
console.log(Y.id(), YY.id())
Я мог бы определить static id() {}
метод в YY
, но тогда мне пришлось бы делать это вручную во всех моих подклассах, что подвержено ошибкам. Возможна ли такая вещь?