타입스크립트 유니온 타입 ( | )과 인터섹션 타입( & ) 과 이넘( enum )

김민우·2023년 1월 19일
0

스파르타 내배캠4기

목록 보기
57/73

유이온 타입과 인터섹션 타입은 or 연산자와 and 연산자를 생각하면 쉽게 알 수 있다.

let min: string & number & boolean

위에 경우에는 string, number, boolean 값 모두를 충족 시키기 위해 불가능한 타입이다

🔵 유니온 타입 ( | )

function logMessage ( value: string | number ) {   
}
logMessage( 'hello')
logMessage( 25 )

🔸장점
한가지 이상 타입을 쓰고 싶을 경우

function logMessage ( value: string | number ) {
    if( typeof value === 'number' ) {
        value.toLocaleString( );
   }
    if( typeof value === 'string' ) {
        value.toString( );
   }
    throw new TypeError(' value must be a string or number ');
}
logMessage( 'hello')
logMessage( 25 )

🔸특징

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

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

function People ( someone: Developer | Person ) {

}
People({ name: 'min', skill: 'front' })
People({ name: 'woo', age: 27 })

쓸 수 있는 속성도 공통된 부분만 쓸 수 있다. name에만 접근 가능

🔵 인터섹션 타입 ( & )

let min: string & number & boolean
모두 만족할 수 없으므로 불가능한 타입

🔸특징

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

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

function People ( someone: Developer & Person ) {
    
}
People({ name: 'min', skill: 'front', age: 27 })

🔵 이넘 ( enum )

특정 값들의 집합

🔸숫자형 이넘

enum Shoes {
    Nike,   // 0
    Adidas,  // 1
}
let MyShoes = Shoes.Nike;
console.log(MyShoes);  // 0

별도의 값을 지정하지 않으면 숫자로 취급한다.

🔸문자형 이넘

enum Shoes {
    Nike = '나이키',   
    Adidas = '아디다스',  
}
let MyShoes = Shoes.Nike;
console.log(MyShoes);  // 나이키

🔸활용

enum Answer {
    Yes = 'Y',
    No = 'N'
}

function askQuestion ( answer: Answer ) {
    if ( answer === Answer.Yes ) {
    console.log( '정답입니다' );
    }
    if ( answer === Answer.NO ) {
    console.log( '오답입니다' )
    }
}
askQuestion( Answer.Yes );
profile
개발자로서 한걸음

0개의 댓글