如何在cookie-session中声明会话类型以实现TypeScript类型推导?
和express-session扩展SessionData接口的方式不同,cookie-session需要针对它的CookieSessionObject接口做类型扩展,具体步骤如下:
- 扩展cookie-session的类型定义
在项目代码中(比如app.ts文件顶部,或者单独的types/cookie-session.d.ts类型文件里)添加以下声明:
declare module 'cookie-session' { interface CookieSessionObject { isSuperAdmin: boolean; token: string; operatorId: number; providerId?: number; } }
- 确保类型被TypeScript识别
如果使用单独的类型文件,需要在tsconfig.json的include数组中包含该文件,示例配置:
{ "include": ["src/**/*", "types/**/*"] }
- 保持cookie-session配置不变
你的现有配置代码无需修改:
app.use( cookieSession({ secret: process.env.SESSION_SECRET as string, }) );
- 直接访问会话属性
完成上述步骤后,TypeScript会自动识别你定义的会话属性,无需每次检查属性是否存在:
// 可直接使用,无类型报错 const isAdmin = req.session.isSuperAdmin; const userToken = req.session.token;
若遇到类型不生效的情况,先确认已安装@types/cookie-session依赖:
npm install @types/cookie-session --save-dev
内容的提问来源于stack exchange,提问作者Diego Rosselot
相关产品推荐
相关产品推荐

