TYPESCRIPT - obsługa express-session
Mam problem z ustawieniem express-session w moim projekcie TS. Kiedy robię jego podstawową konfigurację (sposób JS), tworzę MW, który jest wywoływany przy każdym żądaniu API, w ten sposób mogę tworzyć lub nie nową tablicę użytkowników w mojej sesji.
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();
}
Walka toczy się na .user, TS wyświetla mi ten błąd
Property 'user' does not exist on type 'never'.
Masz jakiś pomysł, jak to przezwyciężyć?
Z góry dziękuję,
Paweł
Odpowiedź #1
Zgodnie z kodem źródłowym typów dla express-session, musisz samodzielnie zdefiniować właściwości dostępne w SessionData (gdzieś w swoim kodzie):
/**
* 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;
}
Proponuję, żebyś to zrobił, ponieważ lepiej wiesz, jakie właściwości ma użytkownik:
np. (być może masz inne dane) w pliku index.d.ts w twoim projekcie:
declare module 'express-session' {
interface SessionData {
user: string;
}
}
