Я использую Passport для обработки аутентификации с помощью приложения Express.Это устанавливает пользователя на экспресс-ответ.Я использую TypeScript, поэтому установка типа запроса на «Запрос» в определениях маршрута приведет к ошибке, поскольку пользовательский объект не существует в экспресс-запросе.Существует множество вопросов о расширении запроса, либо путем объявления слияния , либо расширения интерфейса , но они вызывают другую ошибку.Мой файл выглядит следующим образом:
import { Router, Request, Response } from 'express'
import { User as CustomUser } from './user'
interface IRequest extends Request {
user: CustomUser
}
const router: Router = Router()
router.get('/', requiresLogin, (req: IRequest, res: Response) => {
console.log(req.user)
res.sendStatus(204)
})
Но теперь я получаю следующий TypeScript для экспресс-обратного вызова:
Argument of type '(req: IRequest, res: Response) => void' is not assignable to parameter of type 'RequestHandlerParams'. Type '(req: IRequest, res: Response) => void' is not assignable to type '(RequestHandler | ErrorRequestHandler)[]'. Property 'includes' is missing in type '(req: IRequest, res: Response) => void'.
Я недавно обновился до TypeScript v2.8.3, иникогда не было проблемы ранее.