Javascript 如何将接口应用于typescript中的匿名回调函数
我有一个这样的界面Javascript 如何将接口应用于typescript中的匿名回调函数,javascript,typescript,typescript-typings,Javascript,Typescript,Typescript Typings,我有一个这样的界面 interface CallBackHandler{ (err: Error, response: {statusCode: number, body: object}):void } 我想把这个接口应用到这个函数的回调中 request({ url: url, method: "GET", withCredentials: false, json: true, headers: headers }, (err, res
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);
});
但是当我添加接口时,如果返回类型不是void,我会得到一个错误,说函数必须返回一些东西
(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);