繁体   English   中英

我如何在TypeScript中将接口应用于匿名回调函数

[英]How can i apply an interface to an anonymous callback function in typescript

我有一个看起来像这样的界面

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()已经具有类型签名:

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

然后,您无需执行任何操作,因为您提供的回调将进行相应的类型检查。

如果该功能还没有这种类型的签名,你想手动投你的回调CallBackHandler ,那么你将需要包装的回调函数在括号中投表情,就像这样:

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

你可以有类似的东西

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM