我想将我的请求和响应传递给 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'})
}
}
我是一名优秀的程序员,十分优秀!