728x90
반응형
union type
변수에 들어올 값이 string 또는 number 이라면 아래와 같이 작성이 가능하다.
let 이름: string | number = 'kim';
let 나이: (string | number) = 100;
괄호를 작성하게 되면 A | B | C 처럼 여러개를 작성할 수도 있다.
저렇게 할당하는 순간 타입은 string 또는 number 중 하나로 변한다.
array 나 object 를 만들 때 union type 을 쓰는 법에 대해서 알아보자.
var 어레이: (number | string)[] = [1,'2',3]
var 오브젝트: {data : (number | string) } = { data : '123' }
하지만 다른 점이 있다면
변수에 정의된 union 타입은 할당을 하면서 or 역할이 사라지지만
array 나 object 에 정의된 union 타입은 or 연산자가 유지된다.
any type
any 타입은 아무 자료형이나 넣을 수 있는 타입니다.
그래서 아래와 같이 코드를 작성해도 오류가 나지 않는다.
let 이름: any = 'kim';
이름 = 123;
이름 = undefined;
이름 = [];
하지만 타입관련 버그가 생길 수 있기 때문에 마구잡이로 사용하면 안되겠다.(타입스크립트를 쓸 이유가 없는 거니까)
unknown type
any 타입과 비슷하다.
모든 타입을 집어넣을 수 있다.(요즘 타입스크립트는 unknown을 사용한다고 함)
자료를 집어 넣어도 타입은 그대로 unknown 이다.
let 이름: unknown = 'kim';
이름 = 123;
이름 = undefined;
이름 = [];
만약에 unknown 타입을 다른 곳에 넣으려고 하면 에러가 난다.(any 타입은 그렇지 않다.)
let 이름: unknown;
let 변수1: string = 이름;
let 변수2: boolean = 이름;
let 변수3: number = 이름;
예시
let 나이: unknown = 1;
나이 + 1;
위의 예시 코드를 보자.
'나이' 가 unknown 이고 1을 넣어서 number 가 된 다음,
1이라는 number 를 더해서 오류가 안나지 않을까? 라고 생각할 수 있지만
unknown 타입은 number 타입이 아니다.
타입스크립트는 확실하게 number 타입은 number 타입과의 연산을 허용한다.
그래서 아래와 같이 오류가 날 것이다.
728x90
반응형