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 );