Typescript 无法在构造函数中访问类中的抽象属性
在下面的示例中,我得到了TypeScript错误Typescript 无法在构造函数中访问类中的抽象属性,typescript,abstract-class,Typescript,Abstract Class,在下面的示例中,我得到了TypeScript错误类“Minigame”中的抽象属性“name”无法在构造函数中访问。 我正在努力思考如何实现这一点。我无法将具体类的名称传递到super()调用中,因为在该调用之前我无法访问对象的属性,也无法使属性为静态的,因为抽象类无法执行该操作 该如何组织以保证每个小游戏实例化一个解释对象,该对象需要具体类的name属性?使名称静态(并删除抽象需求)真的是保持简单的最佳选择吗 abstract class Minigame { abstract nam
类“Minigame”中的抽象属性“name”无法在构造函数中访问。
我正在努力思考如何实现这一点。我无法将具体类的名称传递到super()
调用中,因为在该调用之前我无法访问对象的属性,也无法使属性为静态的
,因为抽象类无法执行该操作
该如何组织以保证每个小游戏
实例化一个解释
对象,该对象需要具体类的name属性?使名称静态(并删除抽象需求)真的是保持简单的最佳选择吗
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();
}
}
这对一根绳子来说有点难看,但你可以:
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();
}
}
该代码没有意义,因为name='Some Game's name'
将在传输的代码中调用super()
后初始化,因此当this.explation=新的解释(this.name)时代码>被执行,这个。名称
还不会被初始化。啊,我想这和我提到的在调用super()
之前不能使用类属性的问题是一样的。在super()
调用期间也没有什么不同。嗯,我只是想知道除了在构造函数之外实例化所需的东西之外,是否还有一种优雅的方法来实现这一点?