6. 연산자를 이용한 타입 정의

CHOYEAH·2023년 11월 5일
0

TypeScript

목록 보기
6/23
post-custom-banner

6-1. 유니온 타입

  • Union Type: 하나의 타입 이상을 사용할 수 있게함
    function logMsg(value: string | number) {
        if(typeof value === 'number'){
            value.toString();
        }
        if(typeof value === 'number'){
            //...
        }
    
        throw new TypeError('value must be string or number');
    }
    
    logMsg('hello');
    logMsg(100)
    
    var choyeah: string | number | boolean;
    choyeah = 'str';
    choyeah = 1000;
    choyeah = true;
  • 유니온 타입의 장점
    • 밸류의 타입에 따라 로직을 분기하면 해당 타입의 속성들을 vsc상에서 확인할 수 있다.
    • 지정한 타입이 아닐경우 에러를 발생시킬 수 있다.
  • 유니온 타입의 특징
    interface Developer {
        name: string;
        skill: string;
    }
    
    interface Person {
        name: string;
        age: number;
    }
    
    function askSomeone(someone: Developer | Person) {
        someone.name;
    }
    
    askSomeone({ name: 'Developer', skill: 'ts'});
    askSomeone({ name: 'Person', age: 30});

    두 인터페이스의 공통 속성인 name만 접근 가능하다, 타입스크립트 입장에서는 어떤 타입이 들어올지 모르므로 모든 속성을 제공할 경우 에러를 일으킬 가능성이 있기 때문이다.

6-2. 인터섹션 타입

interface Developer {
    name: string;
    skill: string;
}

interface Person {
    name: string;
    age: number;
}

function askSomeone(someone: Developer & Person) {
    someone.name;
    someone.age;
    someone.skill;
}

askSomeone({ name: 'Both', skill: 'ts', age: 30})

인터섹션 타입을 사용하여 위와 같이 두 인터페이스를 사용할 경우 두 인터페이스의 모든 속성을 가진 타입이 인자로 들어와야 한다. (var choyeah: string & number & boolean; 같은 정의는 절대 불가함)

profile
Move fast & break things
post-custom-banner

0개의 댓글