在 TypeScript 中更改 Express 的命名空间

changing namespace of express in typescript

提问人:Mehrad Farahnak 提问时间:5/7/2023 更新时间:5/7/2023 访问量:163

问:

我想更改我的打字稿文件中的 express 命名空间并向其添加另一个选项,但 eslint 出现一些错误,

declare global {
  namespace Express {
    interface Request {
      currentUser?: User;
    }
  }
}

错误是: ES2015 模块语法优先于命名空间。

除了更改 TS 规则之外,我该如何修复此错误

TypeScript 命名空间 nestjs

评论


答:

1赞 Artur Minin 5/7/2023 #1

你可以这样做:

declare module 'express' {
  export interface Request {
    currentUser?: User;
  }
}

评论

0赞 Mehrad Farahnak 5/7/2023
非常感谢,但是在添加此eslint之后,属性“session”在类型“Request<ParamsDictionary,any,any,ParsedQs,Record<string,any”上不存在>>
0赞 Artur Minin 5/7/2023
尝试从 的原生接口扩展expressRequest
0赞 Mehrad Farahnak 5/7/2023
你能写吗,sry,我看不懂
0赞 Artur Minin 5/7/2023
import { Request } from 'express'declare module 'express' { export interface RequestExtended extends Request { currentUser?: User;
0赞 Mehrad Farahnak 5/7/2023
不,它不起作用。导出接口“RequestExtended”的“extends”子句具有或正在使用私有名称“Request”。