node.js - 如何在 Typescript/Express 中通過聲明合併修改 `request.params.id` 的類型?
我已成功將 currentUser 添加到 Express 的 Request 介面中:
declare global {
namespace Express {
export interface Request {
currentUser?: User;
}
}
}
然而,我也想要指出,Request 的路徑參數 req.params.id(其中 req 的類型是 Express.Request)是一個數字,而不是字串(字串是 Request 介面中 params 的預設類型)。但我不確定如何實現,因為它嵌套在 ParamsDictionary 介面中。這裡是一段我 未成功 嘗試的程式碼片段:
declare global {
namespace Express {
export interface ParamsDictionary extends Request {
id: number;
}
}
}
供參考,Request 在預設的 Express/Typescript 配置檔案中定義如下:
interface Request<
P = core.ParamsDictionary,
ResBody = any,
ReqBody = any,
ReqQuery = core.Query,
Locals extends Record<string, any> = Record<string, any>
> extends core.Request<P, ResBody, ReqBody, ReqQuery, Locals> {}
這就是為什麼我一直在嘗試修改 ParamsDictionary,我假設它包含可以在中介軟體或路由函數的 req.params 中找到的路徑參數。我仍然會收到像這樣的錯誤,這證明 Typescript 仍然假設 id 是字串(我已確認它不是,它是以數字傳遞的):
