看到这样一段代码(节选)
这里是定义部分
export interface BaseWebSocket {
onopen: ((this: WebSocket, ev: Event) => any) | null;
}
class MyWebSocket implements BaseWebSocket {
webSocket?: WebSocket;
onopen: ((this: WebSocket, ev: Event) => any) | null = null;
connect(url: string): void {
this.webSocket = new WebSocket(url);
this.webSocket.onopen = this.onopen;
}
}
然后,再下面某个函数里面,再创建该 class 的实例,并调用给这个实例的 onopen 添加实现的时候,只有一个“参数”。
(blabla...)
const webSocket = webSocketIn ? webSocketIn : new MyWebSocket();
webSocket.onopen = _event => {
// 具体的实现代码,这里,这个 arrow function 只有一个参数
// 但是,onopen 的接口定义,是两个参数
// 第一个参数,this: WebSocket 为什么可以忽略?还是......
}
(blabla...)
webSocket.connect("url here...")
google 了一下,没有找到答案,估计是我搜索关键字不对......