簡體   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