본문 바로가기

Javascript/TypeScript

[타입스크립트] 여러가지 타입을 정하는 방법 - union, any, unknown

타입스크립트에서는 변수 하나를 만들고 타입을 지정할 수 있다.

 

유니온 타입 : 

그런데, 가끔가다가 숫자만이 아니라, 문자도 같이 들어오게 하고 싶을 때 어떻게해야할까?

let 변수 : string | number = 'kim'

이렇게 변수에 string | number형식으로 타입을 선언하면 문자 또는 숫자의 타입을 허용한다는 말이 된다. 이렇게 두 가지 타입을 합친다는 의미로 union이라는 단어를 사용한다.  

소괄호를 쳐도 된다. (string | number | boolean)

 

응용하기 : 

문제 상황을 생각해보자

let 회원들 : number[] = [1,2,3];

이렇게 배열안의 타입을 정해줄 수 있다 . 그런데 만약 배열안에 [1,'2',3]과 같이 숫자도 들어가고 문자도 들어가는 배열을 만들고 싶으면 어떻게해야할까? 

또 다른 문제도 같이 생각해보자.

let 오브젝트 : { a : string } = { a : '123' }

또 이 오브젝트를 볼 때, a라는 키값에 숫자도 넣고 싶고 문자도 넣고 싶을때는 어떻게 해야할까? 

let 회원들 : (number | string)[] = [1,'2', 3] ;
let 오브젝트 : { a : string | number } = { a : 123 }

이렇게 하면 우리가 마주한 문제를 해결할 수 있다. 

 

any타입 :

만약 이렇게 하는게 귀찮다면 any라는 타입이 있다. 

let 이름 : any;

이름 = 123;

이름 = true;

그런데, any타입은 타입스크립트를 쓰는 의미가 없다. 그래서 가능하면 쓰지 않도록 한다. 

 

unknown타입 : 

unknown타입은 any보다는 안전하다. 

let 이름 : unknown; 

이름 = 123; 

이름 = {  };

이게 any보다는 안전한데, 안전한 이유는 

let 변수 1 : string = 이름 ; 이렇게 했을 경우 에러가 난다. 

마지막에 할당된 변수의 타입으로 타입이 지정되어 있기 때문이다.