首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPESCRIPT - express-session处理

TYPESCRIPT - express-session处理
EN

Stack Overflow用户
提问于 2020-12-08 21:48:13
回答 1查看 816关注 0票数 0

我正在努力在我的TS项目中设置快速会话。当我对它进行基本设置时(JS方式),我创建了一个在每个API请求时调用的MW,这样我就可以在我的会话中创建或不创建新的用户数组。

代码语言:javascript
复制
import {Request, Response, NextFunction} from 'express'

module.exports = (req: Request, res: Response, next: NextFunction) => {
    console.log('session checker : ', req.session)
    if (!req.session){
        req.session.user = []
        console.log('session initialized')
    }
    next();
}

.user上有问题,TS显示了这个错误

代码语言:javascript
复制
Property 'user' does not exist on type 'never'.

你有什么办法克服它吗?

提前谢谢你,

保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-08 21:54:47

根据express-session类型的source code,您需要自己定义SessionData中可用的属性(在代码库中的某个位置):

代码语言:javascript
复制
    /**
     * This interface allows you to declare additional properties on your session
object using [declaration merging]
(https://www.typescriptlang.org/docs/handbook/declaration-merging.html).
     *
     * @example
     * declare module 'express-session' {
     *     interface SessionData {
     *         views: number;
     *     }
     * }
     *
     */
    interface SessionData {
        cookie: Cookie;
    }

我建议您这样做,因为您更清楚用户拥有哪些属性:

例如(可能您有不同的数据)在项目的index.d.ts文件中:

代码语言:javascript
复制
     declare module 'express-session' {
         interface SessionData {
             user: string;
         }
     }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65200186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档