我是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; }; }
感谢您的合作。
答案 0 :(得分:0)
类型中的new
关键字定义该类型应具有与该签名匹配的构造函数。因此,WebSocketCtor
必须是一个带有构造函数的对象,该构造函数需要一个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 !!!!")
}
},
};
}
答案 1 :(得分:0)
使用此:
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 !!!!")
}
},
};
}