[TypeScript] Any & Unknown 타입

kjy0124·2025년 7월 25일
post-thumbnail

🎯 Any 타입

✅ 정의

  • any모든 타입의 값을 허용하며, TypeScript타입 검사 시스템을 우회하는 특수한 타입
  • 즉, 해당 변수에 어떠한 값이 들어와도 컴파일러 오류가 발생하지 않음

✅ 사용 방법

let anyVar: any = 10; // 숫자
anyVar = "hello"; // 문자열

anyVar = true; // 불리언
anyVar = [1, 2, 3]; // 배열
anyVar = { name: "홍길동", age: 26 }; // 객체
anyVar = () => {}; // 함수
  • any는 말 그대로 "어떤 것이든 허용" 을 의미
  • 따라서 타입 제한이 없이 어떤 값이든 할당 가능

✅ 사용 예시

function getDataFormLegacyAPI(): any {
  return JSON.parse("{ name: 'KJY' }");
}
  • any는 기존 JavaScript 코드에서 TypeScript로 전환하는 과정에서 임시로 사용되기도 함
  • 하지만 장기적으로는 정확한 타입 지정이 필요

⚠️ 주의사항

let anyVar: any = [1, 2, 3];
anyVar.toUpperCase(); // ❌ 런타임 에러 발생
TypeError: anyVar.toUpperCase is not a function
  • any 타입은 컴파일러가 타입 검사를 생략하므로, 어떤 메서드를 호출하든 오류 없이 컴파일
  • 하지만 실제로 anyVar가 문자열이 아니라 배열(Array)이기 때문에 toUpperCase()라는 메서드는 존재하지 않음
  • 따라서 코드가 실행될 때 런타임 오류가 발생

📌 정리

any 타입은 컴파일 타임에 오류를 막아주지 않기 때문에, 잘못된 메서드 호출이 런타임 에러로 이어질 수 있는 위험한 타입


🎯 Unknown 타입

✅ 정의

unknown은 어떤 타입이 들어올지 알 수 없을 때 사용하는 타입
any와 비슷해 보일 수 있지만, 타입 안정성을 보장한다는 점에서 완전히 다름

  • unknown 타입의 변수는 직접 사용 불가능
  • 반드시 타입 검사를 거친 후에만 접근하거나 사용할 수 있어야 함
  • 따라서 any보다 더 안전한 타입이라고 할 수 있음

정답은 사용 가능 !!!

if (typeof unknownVar === "number") {
  num = unknownVar;
}
  • unknown 타입은 타입 체크 후에만 사용 가능
  • 이러한 과정을 타입 정제 또는 타입 좁히기라고 칭함

✅ 사용 방법 및 예시

❌ 타입 검사 없이 사용 시 오류 발생

let unknownVar: unknown;

unknownVar = "hello";
console.log(unknownVar.toUpperCase());
  • 오류: 'unknown' 타입에는 toUpperCase가 없음

✅ 타입 검사 후 안전하게 사용

if (typeof unknownVar === "number") {
  num = unknownVar; // unknown 타입은 타입 체크 후에만 사용 가능
}

✅ 타입 좁히기(Type Narrowing)의 예

function handleData(data: unknown) {
  if (typeof data === "number") {
    console.log(data.toFixed(2));
  } else if (typeof data === "string") {
    console.log(data.toUpperCase());
  } else {
    console.log("지원하지 않는 타입입니다.");
  }
}
  • unknown 타입은 사용 전 타입을 확인하도록 강행
  • 런타임 오류 가능성을 줄일 수 있음

항목anyunknown
타입 검사생략됨 (모든 타입 허용)사용 전 반드시 타입 검사 필요
안전성매우 낮음비교적 높음 (런타임 오류 예방 가능)
타입 추론불가능불가능
사용 목적빠르게 개발할 때 / 임시 타입타입을 알 수 없지만 안정성을 보장하고 싶을 때
자동완성XX

출처

한 입 크기로 잘라먹는 타입스크립트
https://www.inflearn.com/course/한입-크기-타입스크립트/dashboard

profile
개발 공부...

0개의 댓글