보통 우린 try catch를 통해서 에러를 다루곤 한다.
catch의 인자를 활용해서 말이다.

try {
  aFunctionThatMightFail();
} catch (e) {
  console.error(e);
}

하지만 e 의 타입이 unknown으로 잡히기에 e.message 같이 Error의 속성을 접근할 수 없게 된다.

unknown으로 잡힐까?

답은 말그대로 무엇이 나올지 모르기 때문이다.
보통은 런타임 에러가 발행되어 catch 되겠지만 명시적으로 무언가를 던질 수 도 있다.

try {
	throw 'hello world'
} catch (e) {
  console.log(e); // hello world
}

따라서 catch된 런타임 에러를 다루기 위해서 instanceof을 활용해 타입을 체크해야 한다.

try {
  aFunctionThatMightFail();
} catch (e) {
  if (e instanceof Error) {
    console.log(e.message)
  }
}

더 많은 내용은 Node.js Error Handling 가이드 참고.