Typescript函数类型赋值问题

时间:2018-05-01 13:17:50

标签: typescript

我试图在我的应用程序中使用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,如果这有任何区别的话。

1 个答案:

答案 0 :(得分:0)

好的,我想我得到了这个。在库中,defition文件this被输入为连接的继承类型,这是因为在此上下文中调用了handler函数。但是我不需要在我的处理函数中显式提供该参数(因为它已经为this定义了)。

我的功能的正确签名是:

const func = (params: IMyRequest, reply: ReplyCallback<IMyResponse> ) => { }