Javascript 如何正确使用带有Phaser的Typescript扩展类

Javascript 如何正确使用带有Phaser的Typescript扩展类,javascript,typescript,ecmascript-6,phaser-framework,Javascript,Typescript,Ecmascript 6,Phaser Framework,我对Javascript和Typescript都是新手。我已经用Javascript编写了一个简单的Phaser游戏,现在想用Typescript ES2015(ES6)重新编写它。 我已经扩展了Phaser.Game类,这样就可以通过它的构造函数传递一个变量。这用于创建websocket。此套接字可以作为游戏或状态类型的属性存在(我在示例中展示了这一点)。 我已经扩展了Phaser.State类,以包括需要由websocket数据通过websocket的.onmessage成员函数设置的属性

我对Javascript和Typescript都是新手。我已经用Javascript编写了一个简单的Phaser游戏,现在想用Typescript ES2015(ES6)重新编写它。
我已经扩展了Phaser.Game类,这样就可以通过它的构造函数传递一个变量。这用于创建websocket。此套接字可以作为游戏或状态类型的属性存在(我在示例中展示了这一点)。
我已经扩展了Phaser.State类,以包括需要由websocket数据通过websocket的.onmessage成员函数设置的属性

为了完整起见,我将createWebsocket显示为一个函数,实际上它是其中一个类的成员函数

function createWebsocket(wsPath, callback){
    var ws = new WebSocket(wxPath);
    ws.onmessage = callback;
    return ws;
}

export class Game extends Phaser.Game {
    csocket: WebSocket;
    constructor(wsPath, container) {
    this.state.add('Boot', Boot, false);
    this.csocket = createWebsocket(wsPath, this.handleMsg);
}

export class Boot extends Phaser.State {
    csocket: WebSocket;
    constructor(){super();}
    my_value: number;
    setMyValue(value) {this.my_value = value};
    this.csocket = createWebsocket(wsPath, this.handleMsg);
}
如何将数据从扩展游戏类实例传递到启动实例,或访问启动实例的createWebsocket成员函数

如果我在游戏中使用以下内容

state = this.state.getCurrentState();
state.setValue()
当getCurrentState()返回基类而不是扩展类的实例时,我得到一个(trans)编译器错误,即使扩展类类型被传递给state.add函数


我认为没有办法将wsPath传递给引导类的构造函数,因为类型被传递给了.add函数。

简单的答案总是最好的答案。所以,回答我自己的问题

虽然示例没有清楚地说明这一点,但是this.state.add调用不仅允许类,还允许类实例。只要使用新的

export class Game extends Phaser.Game {
    csocket: WebSocket;
    constructor(wsPath, container) {
        var bootState = new Boot(wsPath);
        this.state.add('Boot', bootState, false);
...