如何在不覆盖 Express 中原始请求的情况下为 res.body 创建 TypeScript 类型注释?
How to make TypeScript type annotation for res.body without overwriting the original Request in Express?
我可以像下面这样将 req.body 的类型设置为 PersoneModel。
import { Request, Response } from 'express';
router.post('/',(req: Request<{}, any, PersoneModel>, res: Response) => {
// req.body is now PersoneModel
}
但是,我覆盖了原始请求,例如下面显示的P extends core.Params = core.ParamsDictionary
。
interface Request<P extends core.Params = core.ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = core.Query> extends core.Request<P, ResBody, ReqBody, ReqQuery> { }
如何避免这种情况?
您可以像下面那样从 express-serve-static-core
导入 ParamsDictionary
。
import { ParamsDictionary } from "express-serve-static-core";
import { Request, Response } from 'express';
router.post('/',(req: Request<ParamsDictionary, any, PersoneModel>, res: Response) => {
// req.body is now PersoneModel
}
我可以像下面这样将 req.body 的类型设置为 PersoneModel。
import { Request, Response } from 'express';
router.post('/',(req: Request<{}, any, PersoneModel>, res: Response) => {
// req.body is now PersoneModel
}
但是,我覆盖了原始请求,例如下面显示的P extends core.Params = core.ParamsDictionary
。
interface Request<P extends core.Params = core.ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = core.Query> extends core.Request<P, ResBody, ReqBody, ReqQuery> { }
如何避免这种情况?
您可以像下面那样从 express-serve-static-core
导入 ParamsDictionary
。
import { ParamsDictionary } from "express-serve-static-core";
import { Request, Response } from 'express';
router.post('/',(req: Request<ParamsDictionary, any, PersoneModel>, res: Response) => {
// req.body is now PersoneModel
}