union type & any type & unknown

코쓱타드·2023년 6월 18일
0
post-thumbnail
  1. union type
    두 개의 타입을 합치기 때문에 union이라 부른다
let player :number | string = 123;
// 위와 같이 숫자를 할당했다면 더 이상 유니온 타입이 아니라
// 타입이 number로 지정된다. 

응용예제

let player :(number | string)[] = [1,'2',3];
// 배열은 꼭 괄호로 묶어줘야함.
let obj :{ a : string | number} = { a : 123};
  1. any type
    모든 자료형을 허용해준다
let player :any // player라는 변수에는 아무 타입이나 할당할 수 있다

하지만 any를 너무 막 가져다 사용하면 타입스크립트를 사용하는 의미가 사라진다.
그래서 any는 타입으로 접근하기보단, '타입을 해제하는 문법'으로 접근해야한다.

  1. unknown
    모든 자료형을 허용해준다는 점에서 any와 거의 비슷하지만 any 타입보다는 훨씬 안전하다는 장점이 있다.

❗중요❗
타입스크립트에선 연산을 할때도 타입을 엄격하게 지켜야한다.

<종종 발생하는 문제>
1. 유니온 타입 연산

let age :string | number;
age + 1; 

왜 에러가 발생할까?
유니온 타입은 두 개의 타입을 합쳐서 '새로운 타입'을 만드는 것이다.
그래서 아래와 같은 두 타입은 가능하다.

  • string 타입 + 1(허용)
  • number 타입 + 1(허용)
    그래서 에러가 발생하지 않게 하려면 age라는 변수에 문자 타입이든 숫자 타입이든 값을 할당해줘야 한다.
  1. unknown 연산
let age :unknown = 1;
age - 1;

왜 에러가 발생할까?
age라는 변수의 타입이 number가 아니기 때문이다.

profile
개발자의 길 from 2022.12

0개의 댓글

관련 채용 정보