[英]How do I fix the error? Typescript: Type 'ErrorRequestHandler' is not assignable to type 'IMiddleware'
In the following code, I got an error with type reassignment: 在以下代码中,我遇到了类型重新分配错误:
export default class AbstractController extends Middleware {
get middleware(): Express.RequestHandler | Express.ErrorRequestHandler { // (6,22)
//...
}
}
Error text: 错误文字:
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'.
Declare RequestHandler and ErrorRequestHandler interfaces: 声明RequestHandler和ErrorRequestHandler接口:
interface RequestHandler {
(req: Request, res: Response, next: NextFunction): any;
}
interface ErrorRequestHandler {
(err: any, req: Request, res: Response, next: NextFunction): any;
}
Declare Middleware class: 声明中间件类:
export interface IMiddleware {
(req: http.IncomingMessage, res: http.ServerResponse): void;
}
export default class Middleware {
get middleware(): IMiddleware {
throw new Error('Не определен middleware.');
}
}
I need to understand not how to fix it, but what is the cause of the error. 我不需要了解如何解决它,而是要了解导致错误的原因。
The Middleware
class expects a IMiddleware
as return type of middleware()
. Middleware
类期望将IMiddleware
作为middleware()
返回类型。
Your interfaces should extend IMiddleware ! 您的界面应扩展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;
}
However, ErrorRequestHandler
's signature does not match IMiddleware
但是,
ErrorRequestHandler
的签名与IMiddleware
不匹配
Maybe you should create a second interface to represent it. 也许您应该创建第二个接口来表示它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.