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

我也在寻求关于这个问题的帮助,我也有类似的问题。