![](/img/trans.png)
[英]How to fix error type void is not assignable to type using react and typescript?
[英]How do I fix the error? Typescript: Type 'ErrorRequestHandler' is not assignable to type 'IMiddleware'
在以下代碼中,我遇到了類型重新分配錯誤:
export default class AbstractController extends Middleware {
get middleware(): Express.RequestHandler | Express.ErrorRequestHandler { // (6,22)
//...
}
}
錯誤文字:
src/controller/AbstractController.ts(6,22): error TS2415: Class 'AbstractController' incorrectly extends base class 'Middleware'.
Types of property 'middleware' are incompatible.
Type 'ErrorRequestHandler | RequestHandler' is not assignable to type 'IMiddleware'.
Type 'ErrorRequestHandler' is not assignable to type 'IMiddleware'.
聲明RequestHandler和ErrorRequestHandler接口:
interface RequestHandler {
(req: Request, res: Response, next: NextFunction): any;
}
interface ErrorRequestHandler {
(err: any, req: Request, res: Response, next: NextFunction): any;
}
聲明中間件類:
export interface IMiddleware {
(req: http.IncomingMessage, res: http.ServerResponse): void;
}
export default class Middleware {
get middleware(): IMiddleware {
throw new Error('Не определен middleware.');
}
}
我不需要了解如何解決它,而是要了解導致錯誤的原因。
Middleware
類期望將IMiddleware
作為middleware()
返回類型。
您的界面應擴展IMiddleware!
interface RequestHandler extends IMiddleware {
(req: Request, res: Response, next: NextFunction): any;
}
interface ErrorRequestHandler extends IMiddleware {
(err: any, req: Request, res: Response, next: NextFunction): any;
}
但是, ErrorRequestHandler
的簽名與IMiddleware
不匹配
也許您應該創建第二個接口來表示它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.