Javascript

[TypeScript] try catch 의 e 타입 - unknown

eulBlue 2024. 3. 25. 15:01

📱테스트 환경

"nuxt": "^3.9.3"
"nuxt-jwt-auth": "^0.0.28"

개인적인 궁금함으로 시작된 내용이였는데

코드 작성할때 try { ... } catch(e) { ... } 로 묶어주는 경우가 많았다.

유지보수 측면이나 안전성을 높일 수 있는 기본적인 방법이라고 생각했고 디버깅 할때도 편했기 때문이다.

타입스크립트로 작성하면 e 에 타입을 정해지지않았다는 에러를 만날 수 있는데

나는 원래 Any 타입을 사용했다. 실제로도 그렇게 사용하는데 문제도 발생하지않았고 괜찮았는데

타입스크립트 4.0 이상부터는 unknown 타입으로 기본으로 설정되어 있다.

try {
	...
} catch (e) {
	console.log(e)
}

// 'throw' of exception caught locally

보통 이런식으로 작성할텐데 이렇게하면 에러는 발생하지 않지만 경고문이 뜬다.

경고를 무시할 순 없으니 해결할 수 있는 방법은 instanceof 를 이용해서 조건문을 이용해 해결하는 방법을 사용하였다.

try {
	...
} catch (e: unknown) {
	if (e instanceof Error) {
  		console.log(e);
	}
}

이런식으로 구문을 통해서 에러를 해결할 수 있다.