TYPESCRIPT -快速会话处理

tpgth1q7  于 2022-12-30  发布在  TypeScript
关注(0)|答案(1)|浏览(104)

我一直在努力将express-session设置到我的TS项目中,当我做基本设置时(JS方式),我创建了一个在每个API请求时调用的MW,这样我就可以在我的会话中创建或不创建一个新的用户数组。

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向我显示此错误

Property 'user' does not exist on type 'never'.

你有办法克服吗?
先谢谢你,
保罗

bvhaajcl

bvhaajcl1#

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

/**
     * 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文件中:

declare module 'express-session' {
         interface SessionData {
             user: string;
         }
     }

相关问题