[英]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.