gpt4 book ai didi

node.js - 如何在 typescript 中获得与express的Post方法相同的数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:01 24 4
gpt4 key购买 nike

我想将我的请求和响应传递给 Controller ​​,但我没有获得正确的数据类型。

下面是我的路由器

import express from 'express'
import { ProjectController } from '../controllers/projectController';

const router = express.Router()
const projectController = new ProjectController()

router.post('/', function(request, response) {
projectController.save(request, response)
})

export default router

上面请求的数据是导出接口(interface)Request extends http.IncomingMessage, Express.Request,它取自/node_modules/@types/express-serve-static-core/index。 d.ts

上面的响应数据是导出接口(interface)Response扩展了http.ServerResponse, Express.Response,它取自/node_modules/@types/express-serve-static-core/index。 d.ts

我的 Controller 如下

export class ProjectController {
public save(request: Request, response: Response) {
response.status(200).send
}
}

上面请求的数据类型是interface Request extends core.Request { },它取自/node_modules/@types/express/index.d.ts上面的响应的数据类型是interface Response extends Body

问题是,当我将请求和响应从 post 方法传递到 Controller 的 save 方法时,数据类型不同,并且不显示状态和发送方法。那么如何声明一个与 post 方法具有相同数据类型的函数。

最佳答案

我用这个thread解决了这个问题.

router.ts

import express from 'express'
import { ProjectController } from '../controllers/projectController';

const router = express.Router()
const projectController = new ProjectController()

router.post('/', function(req, res) {
projectController.save(req, res)
})

export default router

controller.ts

import { Router, Request, Response } from 'express'

export class ProjectController {
public save(req: Request, res: Response) {
res.status(200).send({message: 'Reached here'})
}
}

关于node.js - 如何在 typescript 中获得与express的Post方法相同的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com