[TypeScript] any와 unknown

2026. 3. 9. 18:44·React/TypeScript

📌 any와 unknown

any 타입

any 타입은 타입스크립으에서만 제공되는 특별한 타입으로 타입 검사를 받지않는 특수한 치트키 타입임.

예를 들어 아주 범용적으로 사용되어야 하는 변수가 있다고 가정을 해보겠음

let anyVar = 10;
anyVar = "hello"; // 오류 발생

변수 anyVar는 number타입의 값 10으로 초기화 했지만 이후에 string타입의 값을 넣는다고 가정을 했음.

타입스크립트에서는 변수의 타입이 변수를 초기화할 때 초기화 하는 값을 기준으로 추론하기 때문에 number → string이 될 수가 없음.

이럴 때 any를 사용함.

let anyVar: any = 10;
anyVar = "hello";

anyVar = true;
anyVar = {};

anyVar.toUpperCase();
anyVar.toFixed();
anyVar.a;

이렇듯 any타입은 어떠한 타입 검사도 받지 않기 때문에 아무 타입의 값이나 범용적으로 담아 사용할 수 있고,

다양한 타입의 메서드도 마음대로 호출해서 사용해도 문제가 되지 않음.

또한, 어떤 타입으로 정의된 변수던 문제 없이 다 할당할 수 있음.

let anyVar: any = 10;
anyVar = "hello";

let num: number = 10;
num = anyVar;

하지만 any는 최대한 사용하면 안됨

우리가 아까 작성한 다음과 같은 코드를 컴파일 하거나 ts-node로 실행해보면 런타임 오류가 발생함.

let anyVar: any = 10;
anyVar = "hello";

anyVar = true;
anyVar = {};

anyVar.toUpperCase();
anyVar.toFixed();
anyVar.a;

이렇듯 any 타입은 타입 검사를 받지 않는 타입이므로 모든 타입스크립트의 문법과 규칙으로부터 자유롭지만 그만큼 위험한 타입임.

따라서 any 타입을 많이 사용하면 많은 부분에서 타입 검사가 제대로 이루어지지 않기에 위험한 코드가 생산됨.

정말 어쩔 수 없는 경우를 제외하고는 any타입을 사용하지 않는 것을 권장함.


Unknown 타입

unknown 타입은 any 타입과 비슷하지만 보다 안전한 타입임

unknown 타입의 변수는 다음과 같이 어떤 타입의 값이든 다 저장할 수 있음

let unknown: unknown;

unknownVar = "";
unknownVar = 1;
unknownVar = () => {};

그러나 반대로는 안됨. unknown 타입의 값은 어떤 타입의 변수에도 저장할 수 없음.

let num: number = 10;

let unknownVar: unknown;
unknownVar = "";
unknownVar = 1;
unknownVar = () = > {};

num = unknownVar; // 오류 발생

또한, unknown 타입의 값은 어떠한 연산에도 참여할 수 없으며, 어떠한 메서드도 사용할 수 없음

let unknownVar: unknown;

unknownVar * 2 // 오류 발생

정리하자면 unknown 타입은 변수의 타입으로 정의되면 모든 값을 할당받을 수 있게 되지만, 어떠한 타입의 변수에도 할당할 수 없고, 모든 연산에 참가할 수 없게됨. ⇒ 값을 저장하는 행위밖에 할 수 없게됨.

만약, 위 코드와 같이 unknown 타입의 값을 number 타입의 값처럼 취급하여 곱셈 연산을 수행하게 하고 싶다면

조건문을 이용해 이 값이 number 타입의 값임을 보장해줘야 함.

if (typeof unknownVar === "number") {
	// 이 조건이 참이 된다면 unknownVar는 number 타입으로 볼 수 있음
	unknownVar * 2;
}

'React > TypeScript' 카테고리의 다른 글

[TypeScript] void와 never  (0) 2026.03.09
[TypeScript] 열거형 타입(enum)  (0) 2026.03.09
[TypeScript] 타입 별칭과 인덱스 시그니처  (0) 2026.03.09
[TypeScript] 객체  (0) 2026.03.06
[TypeScript] 배열과 튜플  (0) 2026.03.06
'React/TypeScript' 카테고리의 다른 글
  • [TypeScript] void와 never
  • [TypeScript] 열거형 타입(enum)
  • [TypeScript] 타입 별칭과 인덱스 시그니처
  • [TypeScript] 객체
이도서
이도서
  • 이도서
    도서의 코딩노트
    이도서
  • 전체
    오늘
    어제
    • 분류 전체보기 (256)
      • Today I Learned (79)
        • 2024 (78)
      • Swift (25)
        • Swift 문법 정리 (19)
        • RxSwift (5)
      • Swift Study (12)
        • Playground (2)
        • Storyboard (9)
        • UIKit (1)
      • Flutter (27)
        • Dart 언어 (16)
        • Flutter Study (11)
      • React (44)
        • HTML & CSS (8)
        • JavaScript 기본 (12)
        • JavaScript 심화 (14)
        • Node.js (2)
        • React (1)
        • TypeScript (7)
      • Git (3)
      • 코딩테스트 (60)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 개발 공부 공유 링크
  • 인기 글

  • 태그

    CLASS
    Flutter
    javascript
    Typescript
    javascript 기본
    코딩테스트
    코딩테스트 level.1
    객체지향
    Til
    storyboard
    코딩테스트Level.1
    내일배움캠프
    함수
    ios앱개발자
    html
    DART
    React
    Swift
    function
    ios
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이도서
[TypeScript] any와 unknown
상단으로

티스토리툴바