from "express";
import { Request } from '../types';
export default (request: Request, response: Response, next: NextFunction) => {
if (request.cookies.token) {
const payload = jwt.verify(request.cookies.token);
request.context = { jwtPayload: payload };
} else {
request.context = { jwtPayload: null };
}
next();
};
А как тайпскрипту объяснить что будет это поле? В примере выше, я пытаюсь использовать свой Request, но в app.use(myMiddleware) он отказывается съедать ее, мол тип не совпадает (TS2769: No overload matches this call.) что логично, но переопределять и апп не хочется, кажется я не в ту сторону мыслю
import { Request as ExpressRequest } from "express";
import { JwtPayload } from '../../app/security';
export interface Request extends ExpressRequest {
context: {
jwtPayload: JwtPayload | null
}
}
Теперь хоть понятно что появляется ошибки при компиляции TS. Тебе нужно создать файл с типами и в нём расширить тип Request
https://stackoverflow.com/questions/37377731/extend-express-request-object-using-typescript как первый ответ отсюда?
Да
но у меня модули, он разве подхватит это дело?
Обсуждают сегодня