javascript - res.body 的 TypeScript 类型注解

标签 javascript node.js typescript express

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

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

我有这个模型:

export type PersoneModel = mongoose.Document & {
  nom: String,
  prenom: String,
}

你能帮帮我吗?

谢谢。

最佳答案

更新:

@types/express@4.17.2 开始,Request 类型使用泛型。

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/express/index.d.ts#L107

interface Request<P extends core.Params = core.ParamsDictionary, ResBody = any, ReqBody = any, ReqQuery = core.Query> extends core.Request<P, ResBody, ReqBody, ReqQuery> { }

您可以像这样将 req.body 的类型设置为 PersoneModel:

import { Request, Response } from 'express';

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

对于@types/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
}

关于javascript - res.body 的 TypeScript 类型注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027563/

相关文章:

javascript - 使用 JavaScript 操作 SVG View 框(无库)

node.js - NodeJS、Mongoose - findOneAndUpdate 无法从服务器工作

node.js - 如何在 Ubuntu 上将 Node js 版本升级到 0.12.4

javascript - 如何通过值获取枚举名称?

javascript - Angular Directive(指令) : scope vs bindToController

javascript - 如何检索 websocket 连接列表?

javascript - 在 heroku 中部署一个 html 文件网站

reactjs - 当使用react-router-dom v6时,我还需要这个@types/react-router-dom包吗?

TypeScript `tsc` 没有在子目录中提取 tsconfig.json?

javascript - 谷歌图表 : Column chart invert y axis