繁体   English   中英

如何初始化类型界面?

[英]How to init type interface?

我是Typescript的新手。 现在面临着我的难题。

我想在Rxjs中初始化WebSocketSubjectConfig的“ WebSocketCtor”字段的Typescript接口字段,但是我不知道该怎么做。

我的发展环境是
npm =「5.6.0」
节点=「8.11.1」
角度=「6.0.3」
rxjs =「6.2.0」

下面是我的代码

/** setting of websocket */
protected getWebsocketConfig(url:string) : WebSocketSubjectConfig<any>{
    return {
                url: url,
                /*
                I can't init this field. how to init ?
                WebSocketCtor: {
                    WebSocket:new WebSocket(url);
                },
                */
                openObserver: {
                    next: (_e: Event) => {
                        console.log("Websocket is open!!!!");
                        console.dir(_e);
                    }
                },
                closeObserver: {
                    next: (_e: CloseEvent) => {
                        console.log("Websocket is close !!!!")
                    }
                },
           };
}

我以为WebSocketSubject的取消订阅方法会关闭websocket连接。 但是看起来好像不行。 我认为如果关闭websocket连接,则需要实现“ WebsocketCtor”并调用Websocket的close方法。

WebSocketSubjectConfig接口在下面

export interface WebSocketSubjectConfig {
    ・・・
    openObserver?: NextObserver;
    closeObserver?: NextObserver;
    WebSocketCtor?: {
        new (url: string, protocols?: string | string[]): WebSocket;
    };
}

谢谢你的合作。

类型中的new关键字定义该类型应具有与该签名匹配的构造函数。 因此, WebSocketCtor必须是一个带有构造函数的对象,该构造函数采用string和可选string | string[] string | string[] ,并返回一个WebSocket对象。 符合此要求的对象是WebSocket类/构造函数本身!

protected getWebsocketConfig(url:string) : WebSocketSubjectConfig<any>{
    return {
                url: url,
                WebSocketCtor: WebSocket,
                openObserver: {
                    next: (_e: Event) => {
                        console.log("Websocket is open!!!!");
                        console.dir(_e);
                    }
                },
                closeObserver: {
                    next: (_e: CloseEvent) => {
                        console.log("Websocket is close !!!!")
                    }
                },
           };
}

用这个:

protected getWebsocketConfig(url: string): WebSocketSubjectConfig<any> {
        return {
            url: url,
            WebSocketCtor: WebSocket, // <-- this
            openObserver: {
                next: (_e: Event) => {
                    console.log("Websocket is open!!!!");
                    console.dir(_e);
                }
            },
            closeObserver: {
                next: (_e: CloseEvent) => {
                    console.log("Websocket is close !!!!")
                }
            },
        };
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM