인프런 커뮤니티 질문&답변

mhr님의 프로필 이미지
mhr

작성한 질문수

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

ambient module

ambient module을 활용한 타입 문제 해결시 문제가 발생합니다.

작성

·

165

0

제로초님 안녕하세요. 

영상에서 해결해주신 대로 타입문제를 해결하고 있는데요. 그런데 tsconfig.json을 아래처럼

{
  "compilerOptions": {
    "strict": true,
    "lib": ["es2015", "es2016", "es2017", "es2018", "es2019", "es2020"],
    "moduleResolution": "node",
    "typeRoots": ["./types"]
  },
  "files": ["./index.ts"]
}

  files에 index.ts를 넣으면 같은 에러가 발생합니다. 그리고 저 부분을 제외하면

router.get('/', isLoggedIn, (req , res) => {
  const user = req.user!.toJSON() as User;
  delete user.password;
  return res.json(user);
} )

 위의 코드에서 req.user!.tsJSON()에서는 문제가 안 생기는데, 대신에 delete 다음에 오는 user.password 부분에 "The operand of a 'delete' operator must be optional." 이라는 에러가 뜹니다. 저 user.password의 type definition을 보면 public User.password: string 이라고 나오는데, 모델을 정의하는 부분에서는 password 뒤에 !를 붙였고, User.init 함수 안에서도 alowNull을 false로 설정해서 optional이 올 필요가 없어보이는데도 그렇네요. 강의 중에는 그런 문제가 안 나오는 것 같던데, 혹시 타입스크립트 버전 차이 때문에 그런 것일까요? 현재 4.2.4 버전 사용 중입니다. 

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 버전 차이때문이고요. 공지사항 확인해주세요.

mhr님의 프로필 이미지
mhr

작성한 질문수

질문하기