유니온타입이란 타입을 한가지가 아닌 여러개를 지정할때 사용된다.
let 회원: number | string | boolean = 123;
let 회원들: (number | string)[] = [1, "2", 3];
// number 타입인 값도 지정가능하고, string 값이 들어오는 배열도 지정 가능하다는 뜻이어서 ( ) 로 감싸주어야한다.
let 회원들: number | string[] = [1, "2", 3];
위처럼 배열안에 한가지 타입이 아니라 여러개의 타입이 쓰일경우, ( ) 를 통해 감싸준다.
any 타입은 어떠한 타입도 지정할수가 있다.
let 이름: any = 123;
이름 = [];
이름 = "BRGNDY";
이름 = true;
타입을 재선언을 해주어도 오류가 나지않고, 심지어 다른 타입들끼리 연산을 해도 오류가 나지 않는다.
타입이 변할수도 있는 가변적인 변수를 사용할때 쓰면 용이하겠지만, any 타입을 사용한다면 타입스크립트를 사용하는 의미가 퇴색된다.
unknown 타입은 any 타입과 비슷하게 어떠한 값도 올수있지만 어떠한 값도 올수 있기때문에 함부로 연산할수 없다.
let 이름: unknown = 123;
이름 = 'BRGNDY';
이름 = false;
이름 = {};
하지만 모든 연산이 다 허용되던 any 타입과는 다르게 unknown타입은 최소한의 안정성을 보장해서 오류를 띄운다.