본문 바로가기
programming language/TypeScript

enum 살펴보기

by cariño 2022. 12. 7.
728x90
반응형
enum이란?
특정 값들의 집합을 의미하는 자료형으로 어떠한 집합의 데이터 타입이다.
enum Shoes{
    Nike,
    Adidas,
    puma
}
const myShoes = Shoes.Nike
console.log(myShoes)

 

Shoes라는 집단을 만들었다. 해당 데이터를 가지고 변수를 만들었는데 콘솔로 찍으면 0 이 나오게 된다.

이넘을 썼을 때 별도의 값을 지정해주지 않으면 숫자형 enum으로 취급을 하게 된다.

그래서 Shoes.Nike는 첫번 째 값이 0으로 시작된다.

 

// 초기화를 할당하지 않으면 기본값은 0부터 증가
enum Shoes{
    Nike = 10,
    Adidas,
    puma
}
const myShoes = Shoes.Adidas
console.log(myShoes) //11
Nike = 10 부터 1씩 증가하게 된다.  새로 만들어진 변수는 1씩 증가해서 콘솔에 11이 찍히게 된다. 
//넘버타입이 나닌 스트링으로 지정했을 때 
enum Shoes{
    Nike = '나이키'
    Adidas = '아디다스',
    puma
}
const myShoes = Shoes.Nike
console.log(myShoes) //'나이키'

 

 

[enums을 활용한 예제]

function askQuestion(answer: string) {
    if(answer === 'YES'){
        console.log('정답')
    }
    if(answer === 'NO'){
        console.log('틀림')
    }
}
askQuestion('yes')
askQuestion('Y')
askQuestion('정답')

매개변수 answer은 string타입이기에 함수 호출시에 yes에 대한 다양한 형태의 문자를 받아서 사용할 수 있다. 

이 모습을 더 구체적으로 값으로 제한을 할 수 있다. 

 

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)//이넘에서 제공하는 값만 넘길 수 있게 됨

 

파라미터의 값이 단순한 문자형태가 아닌, enum으로 만든 타입인지에 대해 비교하게 된다.

드롭다운 등 목록이 필요한 형태는 enum을 활용하여 정확한 코드나 예외처리 케이스에 유용하다. 

728x90

댓글