javascript - La propiedad `user` no existe en el tipo `Session & Partial`
Tenía un código en JavaScript y estoy tratando de convertirlo a TypeScript
route.get('/order', async(req,res) => {
var sessionData = req.session;
if(typeof sessionData.user === 'undefined')
{
res.redirect('/panel/login');
}
este es un fragmento de mi código que solía funcionar correctamente en javascript pero ahora obtengo este error para el user:
La propiedad 'user' no existe en el tipo 'Session & Partial'
Asumo que debería agregar tipos para la variable sessionData y los parámetros (req, res), pero no sé qué tipo debería asignarse exactamente a ellos.
PD: Sé que esta pregunta parece duplicada, pero he intentado soluciones de otras preguntas similares y no funcionó
Cualquier ayuda sería apreciada.
Respuesta #1
Como se indica en el comentario de tipos de express-session, tienes que usar Declaration merging.
Aquí se muestra cómo puedes implementar fusión de declaraciones en express-session:
import session from 'express-session';
declare module 'express-session' {
export interface SessionData {
user: { [key: string]: any };
}
}
Respuesta #2
Acabo de encontrarme con el mismo problema que tú. Esto parece ser un problema bastante reciente: ve la explicación aquí.
Para solucionar esto, sobrecargué el módulo como se describe en el problema de Github:
import "express-session";
declare module "express-session" {
interface SessionData {
user: string;
}
}
Simplemente reemplaza string con el tipo que necesites para ese campo.
También he agregado ./typing-stubs en tsconfig.json
"typeRoots": [
"./typing-stubs",
"./node_modules/@types"
]
