[TypeScript] unknown 타입

해리포터·2022년 11월 28일
0
post-thumbnail

unknown type

  • TypeScript 3.0 부터 새로 추가된 타입
  • 문자 그대로 알려지지 않은 타입 이다.
  • unknown 타입으로 선언된 변수의 값으로는 모든 타입이 올 수 있다. (any타입과 비슷)

그렇다면 unknownany 의 차이점은 무엇일까?


unknown 과 any의 차이

  • unknown에는 메서드를 호출할 수 없다.
    어떤 타입인지 확실하지 않기 때문에 타입스크립트는 어떠한 연산이든 실행하지 않는다.
let userInput: unknown;
console.log(userInput.length); // ❌ 에러

  • unknown 타입을 가진 변수는 any를 제외하고 다른 타입을 가진 변수에 할당할 수 없다.

다시 말해, 고정된 타입을 가지고 있는 변수에 unknown 타입을 가진 변수를 할당할 수 없다.

let userInput: unknown;
let userName: string;

userInput = 5; // ⭕️ 작동
userInput = 'Harry'; // ⭕️ 작동
userName = userInput; // ❌ 에러

unknown 타입을 가진 변수를 다른 변수에 할당하기 위해서는 타입 체크를 해주면 된다.

let userInput: unknown;
let userName: string;

userInput = 5;
userInput = 'Harry';
if (typeof userInput === 'string') { 
  userName = userInput; // ⭕️ 작동
}

unknown 타입을 쓰는 이유

변수의 값으로 어떤 타입이 올지 미정인 상태에서 any를 쓴다면 타입스크립트를 사용하는 이유가 없다. (any 타입은 타입스크립트가 제공하는 여러 장점들을 무력화시키기 때문에.)

이럴 때 any 보다 깐깐한(?) unknown 타입을 사용하는 것이 좋다. (타입 선언 이후 조건문 등으로 타입 체크 코드 작성하면 unknown 타입을 잘 사용할 수 있다!)

profile
FE Developer 매일 한 걸음씩!

0개의 댓글