Typescript 无法在构造函数中访问类中的抽象属性

Typescript 无法在构造函数中访问类中的抽象属性,typescript,abstract-class,Typescript,Abstract Class,在下面的示例中,我得到了TypeScript错误类“Minigame”中的抽象属性“name”无法在构造函数中访问。 我正在努力思考如何实现这一点。我无法将具体类的名称传递到super()调用中,因为在该调用之前我无法访问对象的属性,也无法使属性为静态的,因为抽象类无法执行该操作 该如何组织以保证每个小游戏实例化一个解释对象,该对象需要具体类的name属性?使名称静态(并删除抽象需求)真的是保持简单的最佳选择吗 abstract class Minigame { abstract nam

在下面的示例中,我得到了TypeScript错误
类“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()
调用期间也没有什么不同。嗯,我只是想知道除了在构造函数之外实例化所需的东西之外,是否还有一种优雅的方法来实现这一点?