我有一个看起来像这样的界面
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);
}
应用此界面的正确方法是什么?
答案 0 :(得分:1)
如果request()
已有类型签名:
function request(options, callback: CallBackHandler) {
...
}
然后您不需要做任何事情,因为您提供的回调将相应地进行类型检查。
如果该函数不已经具有该类型签名,并且您想手动将回调转换为CallBackHandler
,那么您需要将回调函数包装在括号中并进行转换表达式,如下:
request({
...etc
}, ((err, response) => {
this.handleResponse(err, response, resolve, reject);
}) as CallBackHandler);
答案 1 :(得分:0)
您可以拥有类似
的内容request({
url: url,
method: "GET",
withCredentials: false,
json: true,
headers: headers
}, (err: Error, response: {statusCode: number, body: object}) => {
this.handleResponse(err, response, resolve, reject);
});