I am trying to create a new extended interface
for express.RequestHandler
but this error seems to come up. I cannot understand why.
An interface can only extend an identifier/qualified-name with optional type arguments. ts(2499)
The express.RequestHandler
interface does not support async functions. It says
The return type of an async function or method must be the global Promise<T> type. Did you mean to write 'Promise<RequestHandler<ParamsDictionary, any, any, ParsedQs, Record<string, any>>>'?ts(1064)
Here are my interfaces
export interface IRequest extends express.Request {
user: IUser;
}
export interface IRequestHandler extends RequestHandler = (
req: IRequest,
res: express.Response,
next: express.NextFunction
) => void | Promise<void>;
CodePudding user response:
It seems you are trying to extend the express.Request
interface.
Try:
import { NextFunction, Request, Response } from 'express';
interface IUser {
name: string;
}
declare module 'express' {
interface Request {
user: IUser;
}
}
const controller = async (req: Request, res: Response, next: NextFunction) => {
console.log(req.user);
};