더북(TheBook)

분명 if문에서 errorError 타입이라 강제 주장했는데 바로 아랫줄에서는 error가 여전히 unknown이라고 나옵니다. 이는 as로 강제 주장한 것이 일시적이기 때문입니다. if문이 참인지 거짓인지를 판단할 때만 주장한 타입이 사용되고, 판단한 후에는 원래 타입으로 되돌아가버립니다.

따라서 이 문제를 해결하기 위해서는 주장한 타입을 계속 기억할 수 있게 만들어야 합니다. 이럴 때 변수를 사용합니다.

try {} catch (error) {
  const err = error as Error;
  if (err) {
    err.message;
  }
}
// const err: Error

err 변수를 선언할 때 타입이 Error가 됩니다. 이제 if문 안에서도 Error 타입인 err 변수를 사용할 수 있습니다. 타입을 주장할 때는 그 타입이 일시적이므로, 변수에 담아야 오래 기억한다는 것을 기억하세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.