我想将请求和响应传递给控制器,但是我没有获得正确的数据类型。
我的路由器在下面
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
以上请求的数据为export interface Request extends http.IncomingMessage, Express.Request
,取自/node_modules/@types/express-serve-static-core/index.d.ts
上面的响应数据为export interface Response extends http.ServerResponse, Express.Response
,取自/node_modules/@types/express-serve-static-core/index.d.ts
我的控制器在下面
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方法传递到控制器的save方法时,数据类型不同,并且不显示状态和send方法。 因此,如何声明与post方法具有相同数据类型的函数。
答案 0 :(得分:1)
我使用此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'})
}
}