将快速请求正文类型从任意覆盖为未知

问题描述 投票:0回答:1

我正在阅读环境模块和声明合并,我正在尝试覆盖 Request

Express TypeScript 定义文件。

我可以添加其他属性,但我似乎无法覆盖现有属性。

declare global {
  namespace Express {
    interface Request extends Record<string, unknown> {
      addition: "a" | "b";
      body: unknown;
      cookies: unknown;
      route: unknown;
      signedCookies: unknown;
    }
  }
}

// type hinting with "a" | "b"
let addition = express.req.addition

// still any
let overridden = express.req.body

大量问题展示了如何增强而不是覆盖。

我还尝试了以下方法:

declare module "express-serve-static-core" {
  namespace Express {
    interface Request extends Record<string, unknown> {
      addition: "a" | "b";
      body: unknown;
    }
  }
}
typescript express
1个回答
0
投票

让我们通过重新声明

Request
模块来覆盖
express
接口,并记住使类型定义文件成为模块:

declare module 'express' {
  interface Request {
    addition: "a" | "b";
    body: unknown;
    cookies: unknown;
    route: unknown;
    signedCookies: unknown;
  }
}

export {}; // magic
© www.soinside.com 2019 - 2024. All rights reserved.