
오늘은 타입스크립트를 사용하면서 한 번쯤 고민 해봤을 any와 unknown의 차이점에 대해 적어보려고 한다.
처음에 타입스크립트를 접하게되면 any를 편하게 사용하는 경우를 자주 봤었다.
나또한 any를 둘의 차이점을 이해하지 못한채 any를 자주 사용했던 거 같다.
그러다가 문뜩 정말 이게 맞을까? 라는 고민이 들기 시작했다.

그래서 unknown과 어떤 차이가 있고, 언제 어떤 타입을 써야 더 안전한 코드를 만들 수 있을지 고민하게된 내용들을 공유하려고 한다.
타입스큽리트에서 any와 unknown은 모두 어떤 타입이든 될 수 있는 타입이다.
하지만 실제로는 큰 차이가 있는데 같이 자세하게 알아보자.

any는 어떤 값이든 허용하므로 타입 검사를 우회한다.
let value: any;
value = "hello";
value = 42;
value.toUpperCase(); // 런타임 오류 없음
이처럼 any를 사용하면 편리하지만, 예상치 못한 런타입 오류가 발생할 가능성이 크다.
unknown은 any처럼 모든 타입을 받을 수 있지만, 사용하기 전에 타입 검사가 필요합니다
let value: unknown;
value = "hello";
value = 42;
if(typeof value === "string") {
value.toUpperCase();
}
이처럼 unknown은 무분별한 사용을 막고 타입 검사를 강제하여 안전한 코드를 작성하도록 도움을 준다.
✅any는 정말 어쩔 수 없는 경우에만 사용을 해야한다. (ex. 외부 라이브러리 데이터)
✅unknown은 타입이 확실하지 않지만, 검사를 거쳐 안전하게 사용할 때 활용하면 된다.

이번 글에서는 any와 unknown에 차이점에 대해서 적어보았다.
any는 유연하지만 위험할 수 있고, unknown은 안전하지만 타입 검사가 필요하다는 점이 핵심이었다.
앞으로 타입스크립트를 사용할 때는 무분별하게 any를 사용하는 것보다는 unknown을 고려해보는 습관을 가지면 더욱 안전한 코드를 작성할 수 있을 거 같다.