Javascript res.body的TypeScript类型批注

Javascript res.body的TypeScript类型批注,javascript,node.js,typescript,express,Javascript,Node.js,Typescript,Express,我正在为我的应用程序node.jsexpress使用typescript。 我想说的是res.body是personne类型。 我试过这个: router.post('/',(req: Request, res: Response) => { const defunt:PersoneModel = res.(<PersoneModel>body); } 你能帮我吗 谢谢。我们可以使用作为。这应该足以暗示res.body是PersoneModel const defun

我正在为我的应用程序
node.js
express使用typescript。 我想说的是
res.body
是personne类型。 我试过这个:

router.post('/',(req: Request, res: Response) => {
   const defunt:PersoneModel = res.(<PersoneModel>body);
}
你能帮我吗


谢谢。

我们可以使用
作为
。这应该足以暗示
res.body
PersoneModel

 const defunt = res.body as PersoneModel;
 const defunt: PersoneModel = res.body;
然而,更直接的方法是将变量的类型声明为
PersoneModel

 const defunt = res.body as PersoneModel;
 const defunt: PersoneModel = res.body;

更新:

@类型开始/express@4.17.2
请求
类型使用泛型


对于
@类型/express@4.17.1
及以下

遇到类似的问题,我使用泛型解决了它:

import { Request, Response } from 'express';

interface PersoneModel extends mongoose.Document {
  nom: String,
  prenom: String,
}

interface CustomRequest<T> extends Request {
  body: T
}

router.post('/',(req: CustomRequest<PersoneModel>, res: Response) => {
   // req.body is now PersoneModel
}
从“express”导入{Request,Response};
接口PersoneModel扩展了mongoose.Document{
名字:字符串,
prenom:String,
}
接口CustomRequest扩展请求{
正文:T
}
router.post(“/”,(请求:CustomRequest,回复)=>{
//req.body现在是PersoneModel
}

太好了!我如何使用RequestHandler类型键入此内容?这两种类型对我都不起作用。对于
req:Request
我收到错误“type Request not generic”,对于
interface CustomRequest extensed Request
我收到错误“type'T'不可分配给type'ReadableStream | null”。使用@types/express^4.17.9。与@Ash相同,我使用的是4.17.11。不知道如何才能做到这一点work@Ash&@Peroxy-是否从
express
导入
请求
类型?可能是TypeScript正在从
获取API
推断
请求
类型。
import { Request, Response } from 'express';

interface PersoneModel extends mongoose.Document {
  nom: String,
  prenom: String,
}

interface CustomRequest<T> extends Request {
  body: T
}

router.post('/',(req: CustomRequest<PersoneModel>, res: Response) => {
   // req.body is now PersoneModel
}