TypeScript修改Express命名空间遇ESLint报错的非规则修改解决办法
解决Express Request接口扩展时的ESLint命名空间报错问题
要避开ESLint的命名空间语法报错,同时实现扩展Express Request接口添加currentUser属性的需求,可以改用TypeScript的模块扩展语法,具体操作如下:
- 将全局命名空间声明替换为模块扩展语法,同时让文件成为ES模块,符合ESLint的规范要求。
修改后的代码示例:
import type { Request } from 'express'; declare module 'express' { interface Request { currentUser?: User; } } // 标记文件为ES模块,确保扩展生效 export {};
说明
- 直接扩展
express模块下的Request接口,符合ES2015模块语法规范,不会触发ESLint的"ES2015 module syntax is preferred over namespaces"报错。 - 导入
Request类型是为了让TypeScript准确定位到要扩展的接口,也可以直接引用express模块(比如import 'express';)来达到相同效果。 export {}是关键:它让当前文件被识别为ES模块,而非全局脚本,这样TypeScript的模块扩展机制才能正常生效。- 确保
User类型已在当前作用域正确声明或导入。
内容的提问来源于stack exchange,提问作者Mehrad Farahnak
相关产品推荐
相关产品推荐

