대수타입

여러가지 타입을 합성해서 만드는 타입이다.

 

 

합집합(Union)타입

   
      let test:string | number;
 

 

바( | )를 이용해서 정의한다.

유니온타입으로 묶인 타입들은 슈퍼-서브관계가 아니어도 상관없음

 

  • 배열에도 사용 가능

      let Arr : (string | number | boolean)[]=["test",12,true]

 

  • 객체 type에도 사용 가능
   
    type One = {
        name:string;
        type:string;
    }

    type Two = {
        name:string;
        price:number;
    }

    type Unions = One | Two
 

 

예시로 든 type Unions인 객체들은 크게 세 가지로 나뉠 수 있다.

 

- name과 type 프로퍼티 두 가지만 갖거나

- name과 price 프로퍼티 두 가지만 갖거나

- name과 type과 price 프로퍼트 세 가지 모두 갖거나

 

 

교집합(intersection)타입

   
        let test: string & number;
 

 

& 을 이용한다.

 

유니온타입에서는 타입들간의 관계가 중요하지 않았지만 인터섹션타입은 타입끼리 겹치는 부분이 필요하다.

때문에 기본 타입들간의 인터섹션은 잘 이용하지 않고 객체 타입에서 많이 이용함.


    type Type1 = {
        name: string;
        color: string;
    }

    type Type2 = {
        name:string;
        skill:string
    }

    type Intersection = Type1 & Type2
 

 

& 연산자를 알고있다면 교집합타입 이해가 쉽다.

Type1과 Type2의 프로퍼티를 모두 갖고있어야 한다는 뜻

 

 

+ Recent posts