[英]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.