타입스크립트 쓴 지 얼마 안 됐는데요, 에러 나면 그냥 any 박아버리는 습관이 들어서 팀에서 지적을 좀 받았어요. any 대신 unknown 쓰라고 하는데 솔직히 뭐가 다른지 잘 모르겠어요.


제가 보기엔 둘 다 "아무 값이나 들어올 수 있다" 아닌가요? 예를 들어 API에서 받아온 응답 같은 거요.


function handle(data: any) {
  console.log(data.name.toUpperCase());
}


이걸 any를 unknown으로 바꾸면요.


function handle(data: unknown) {
  console.log(data.name.toUpperCase());
}


이러면 data.name 부분에서 빨간줄이 뜨더라고요. 'data'는 'unknown' 형식입니다 어쩌구 하면서요. 결국 쓰려면 뭔가 체크를 더 해야 되는 것 같은데, 그럼 그냥 귀찮게만 하는 거 아닌가 싶기도 하고요.


unknown은 왜 바로 못 쓰게 막는 건가요? 그리고 실무에서는 unknown 받으면 보통 어떻게 풀어서 쓰는지 예시로 좀 알려주시면 감사하겠습니다. 타입 가드라는 것도 이거랑 관련 있는 건가요?