我试图在我的应用程序中使用json-rpc-ws
库,并且我遇到了由库定义的处理程序函数签名的问题。
库在声明文件中有以下类型别名(Connection是一个接口):
export type Handler<TConnection extends Connection, ParamType, ParamCallbackType> = (this: TConnection, params: ParamType, reply: ReplyCallback<ParamCallbackType>) => void;
export type ReplyCallback<ParamType> = (error: any, params?: ParamType) => void;
现在我尝试以下列方式在测试代码中创建处理函数:
// Define a function
const func = (conn: Connection, params: IMyRequest, reply: ReplyCallback<IMyResponse> ) => { }
// Try cast to a handler
const handlerFunc = func as Handler<Connection, IMyRequest, IMyResponse>;
但是,我收到func
无法转换为相应类型的错误。我在这里失踪了什么?
我使用的是Typescript 2.8.1,如果这有任何区别的话。
答案 0 :(得分:0)
好的,我想我得到了这个。在库中,defition文件this
被输入为连接的继承类型,这是因为在此上下文中调用了handler函数。但是我不需要在我的处理函数中显式提供该参数(因为它已经为this
定义了)。
我的功能的正确签名是:
const func = (params: IMyRequest, reply: ReplyCallback<IMyResponse> ) => { }