В следующем примере я получаю ошибку TypeScript Abstract property 'name' in class 'Minigame' cannot be accessed in the constructor.
Я изо всех сил пытаюсь придумать, как я мог бы это реализовать.Я не могу передать имя конкретного класса в вызов super()
, потому что я не могу получить доступ к свойствам объекта до этого вызова, и я не могу сделать свойства static
, потому что абстрактный класс не может применить это.
Как это организовать, чтобы гарантировать, что каждый Minigame
создает экземпляр объекта Explanation
, для которого требуется свойство name конкретного класса?Является ли создание имени static
(и удаление абстрактного требования) действительно лучшим вариантом для простоты?
abstract class Minigame {
abstract name: string;
explanation: Explanation;
constructor() {
this.explanation = new Explanation(this.name);
}
}
class SomeGame extends Minigame {
name = "Some Game's Name";
constructor() {
super();
}
}