在下面的示例中,我收到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();
}
}
答案 0 :(得分:1)
字符串有点难看,但是您可以这样做:
abstract class Minigame {
abstract GetName(): string;
explanation: Explanation;
constructor() {
this.explanation = new Explanation(this.GetName());
}
}
class SomeGame extends Minigame {
GetName(): string {
return "Some Game's Name";
}
constructor() {
super();
}
}