我正在想办法把
project
使用中间件将对象添加到请求中+使用Typescript正确键入它。以下是一个示例:
const MOUNT = { prefix: "/project/:pid/job/" }
const attachProjectMiddleware = async (req: FastifyRequest, reply: FastifyReply, done: () => void): Promise<void> => {
//@ts-ignore
req.project = await getProject(req.params.pid as string)
done()
}
app.addHook("preHandler", attachProjectMiddleware)
我需要弄清楚的两件事是:
-
这是向请求添加内容的正确方式吗?
-
如何正确地将Typescript类型添加到以下代码中,以便Typescript理解
req.project
是否有效?
在我的处理程序中:
app.post<ProjectIdRoute>(`/do_important_thing/start`, async (req, reply) => {
// need this to typecheck
req.project
}
哪里
ProjectIdRoute
看起来是这样的:
export interface ProjectIdRoute {
Params: {
pid: string
}
}