簡體   English   中英

如何解決打字稿中無法將X類型分配給Y類型錯誤的問題?

[英]How can I fix this type X is not assignable to type Y error in typescript?

在我的快速應用程序中,我具有以下中間件:

app.use(function(req, res, next) {
  let _end = res.end;
  res.end = function end(chunk, encoding) {
    ...
    return _end.call(res, chunk, encoding);
  };
  next();
});

這將返回以下打字稿錯誤:

錯誤TS2322:類型'((塊:任何,編碼:任何)=>任何'不能分配給類型'{():void; (緩沖區:緩沖區,cb ?:功能):空; (str:字符串,cb ?:功能):void; (str:stri ...'。

@types/node/index.d.ts end方法的描述如下:

end(): void;
end(buffer: Buffer, cb?: Function): void;
end(str: string, cb?: Function): void;
end(str: string, encoding?: string, cb?: Function): void;
end(data?: any, encoding?: string): void;

解決此錯誤的正確類型是什么?

從我所看到的,您打算使用一種可用的重載: end(data?: any, encoding?: string): void; 在這種情況下,您只需要使函數簽名顯式兼容即可。 代替

// ...
res.end = function end(chunk, encoding) {
// ...

采用

// ...
res.end = function end(chunk?:any, encoding?:string) {
// ...

並確保正確處理一些極端情況,例如根本沒有傳遞參數的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM