passport 관련 타이핑이 또 업데이트 되었네요.
types/index.d.ts에 다음 코드를 추가하고
import IUser from '../models/user';passport/index.ts를 다음과 같이 바꾸세요.
declare global {
namespace Express {
export interface User extends IUser {}
}
}
passport.serializeUser((user, done) => {덤으로 req.user도 req.user!.toJSON() as User 할 필요 없게 되었습니다. 그냥 req.user 쓰시면 됩니다.
done(null, user.id);
});
passport.deserializeUser<number>(async (id, done) => {
try {
const user = await User.findOne({
where: { id },
});
if (!user) {
return done(new Error('no user'));
}
return done(null, user); // req.user
} catch (err) {
console.error(err);
return done(err);
}
});
tsconfig.json에는 ts-node 부분 추가하셔야 합니다.
{
"ts-node": {
"files": true
},
"compilerOptions": {
"strict": true,
"lib": ["es2020"],
"esModuleInterop": true,
"moduleResolution": "node",
"typeRoots": ["./types"]
}
}