인프런 영문 브랜드 로고
인프런 영문 브랜드 로고
개발 · 프로그래밍

/

백엔드

Node.js에 TypeScript 적용하기(feat. NodeBird)

Node.js에 타입스크립트를 적용해보고, 기존 npm 패키지에 타이핑을 추가하거나, 직접 타입스크립트 라이브러리를 만들어봅시다.

(4.4) 수강평 14개

수강생 465명

Thumbnail
새소식 목록
관리
작성

serializeUser와 deserializeUser 에러나는 분들께

passport 관련 타이핑이 또 업데이트 되었네요.

types/index.d.ts에 다음 코드를 추가하고

import IUser from '../models/user';

declare global {
    namespace Express {
        export interface User extends IUser {}
   }
}

passport/index.ts를 다음과 같이 바꾸세요.
 passport.serializeUser((userdone=> {
    done(nulluser.id);
 });
  passport.deserializeUser<number>(async (iddone=> {
    try {
      const user = await User.findOne({
        where: { id },
     });
      if (!user) {
        return done(new Error('no user'));
     }
      return done(nulluser); // req.user
    } catch (err) {
      console.error(err);
      return done(err);
   }
});

덤으로 req.user도 req.user!.toJSON() as User 할 필요 없게 되었습니다. 그냥 req.user 쓰시면 됩니다.

tsconfig.json에는 ts-node 부분 추가하셔야 합니다.
{
"ts-node": {
"files": true
},
"compilerOptions": {
"strict": true,
"lib": ["es2020"],
"esModuleInterop": true,
"moduleResolution": "node",
"typeRoots": ["./types"]
}
}
댓글