Typescript 快速路由器的自定义请求和响应类型
我想创建将记录器附加到请求的自定义Typescript 快速路由器的自定义请求和响应类型,typescript,express,Typescript,Express,我想创建将记录器附加到请求的自定义express.Request类型 我不想覆盖原始的express.Requestexpress,而是创建一个新的扩展,因为应用程序的某些部分有其他中间件,可以将其他自定义属性附加到请求 因此,在global.d.ts中,我定义了扩展请求接口 import { NextFunction, Request, Response } from "express"; import { Logger } from "pino"; declare global { i
express.Request
类型
我不想覆盖原始的express.Request
express,而是创建一个新的扩展,因为应用程序的某些部分有其他中间件,可以将其他自定义属性附加到请求
因此,在global.d.ts
中,我定义了扩展请求接口
import { NextFunction, Request, Response } from "express";
import { Logger } from "pino";
declare global {
interface AppRequest extends Request {
log: Logger;
}
interface AppResponse extends Response {}
interface AppNextFunction extends NextFunction {}
}
然后在某个app router.ts中:
import { Router } from "express";
const router = Router();
function validateSecretMiddleWare(req: AppRequest, res: AppResponse, next: AppNextFunction):void {
if (process.env.STATS_SECRET !== req.query.secret) {
res.sendStatus(404);
return;
}
next();
}
router.use(validateSecretMiddleWare);
export default router;
但我收到了这个错误:
类型为“(req:AppRequest,res:AppResponse,next:AppNextFunction)=>void”的参数不能分配给类型为“PathParams”的参数。
Type'(req:AppRequest,res:AppResponse,next:AppNextFunction)=>void'缺少Type'(string | RegExp)[]中的以下属性:pop、push、concat、join和其他
我检查了express.RouterHandler
,发现它使用了express.RequestHandlerParams
,它使用了请求、响应、下一个函数
类型,我的不认为
有效express.Request
?我也在寻求关于这个问题的帮助,我也有类似的问题。