본문 바로가기
프로젝트 개발 기록/[개발] trouble shooting

[Error: TS(2339)] TypeScript에서 catch(error) 에서 error message 사용하기

by HelloJudy 2022. 6. 15.

💡문제 상황

 

JavaScript에서 catch 문에서는 error.message를 쓰는 경우가 많았다.

TypeScript에서도 JS와 같이 코드를 작성하니 다음과 같은 오류가 생겼다.

 

 

TypeScript는 error의 타입을 unknown을 기본값으로 갖는다. 

 

 

그래서 catch 절 error 변수에 Error 타입을 넣어보았다.

하지만 뚜둥! 다음과 같은 오류가 생겼다.

 

 

catch 문에서 발생하는 에러가 Error 객체가 아닌 에러일 수도 있기 때문에 Error 타입을 지정해줄 수 없다.

 

따라서 error가 Error 객체라면 error.message를 반환하고 다른 객체라면 error 자체를 stringify 해서 반환하자.

 

 

💡 해결 방법

 

catch문에 사용할 error util 함수를 만들었다.

 

  • error-util.ts
const getErrorMessage = (error: unknown) => {
  if (error instanceof Error) return error.message;
  return String(error);
};

export { getErrorMessage };

 

  • try - catch 문에 적용
try {
 .
 .
    };
  } catch (error) {
    return {
      ok: false,
      status: "fail",
      message: getErrorMessage(error),
    };
  }

 

 


📌 Reference

반응형

댓글