我怎么能一个接口适用于一个匿名的回调函数在打字稿

我怎么能一个接口适用于一个匿名的回调函数在打字稿

问题描述:

我有一个看起来像这样我怎么能一个接口适用于一个匿名的回调函数在打字稿

interface CallBackHandler{ 
(err: Error, response: {statusCode: number, body: object}):void 
} 

的接口,我想该接口适用于本

request({ 
    url: url, 
    method: "GET", 
    withCredentials: false, 
    json: true, 
    headers: headers 
    }, (err, response) => { 
    this.handleResponse(err, response, resolve, reject); 
    }); 

回调但我得到一个错误说,函数必须返回的东西,如果返回类型不是无效的,当我添加接口

(err, response): CallBackHandler => { 
    this.handleResponse(err, response, resolve, reject); 
    } 

什么是应用此接口的正确方法?

您可以像

request({ 
    url: url, 
    method: "GET", 
    withCredentials: false, 
    json: true, 
    headers: headers 
}, (err: Error, response: {statusCode: number, body: object}) => { 
    this.handleResponse(err, response, resolve, reject); 
}); 

如果request()已有类型签名:

function request(options, callback: CallBackHandler) { 
    ... 
} 

那么你应该不需要做任何事情,作为回调您提供的将是类型 - 相应检查。

如果功能已经有这种类型的签名,你想手动投你的回调CallBackHandler,那么你将需要包装在括号中的回调函数和铸造的表达,就像这样:

request({ 
    ...etc 
}, ((err, response) => { 
    this.handleResponse(err, response, resolve, reject); 
}) as CallBackHandler);