본문 바로가기

Typescript

[typescript 기본] enum과 enum 활용법

ENUM 이란? 

특정 값들의 집합을 의미하는 자료형

 

숫자형 ENUM

enum Shoesnum {
  Nike,
  Adidas
}

var myShoes1 = Shoesnum.Nike;
console.log(myShoes1); // 0
숫자형 enum은 default가 0이고 그 다음은 1씩 증가함.

 

enum Shoesnum2 {
  Nike = 5,
  Adidas
}

var myShoes2 = Shoesnum2.Nike;
var myShoes3 = Shoesnum2.Adidas;
console.log(myShoes2, myShoes3); // 5, 6
default를 변경할 수 있음. 초기값을 5로 설정하면 5부터 시작.

 

문자형 ENUM

enum ShoesString {
  Nike = "나이키",
  Adidas = "아디다스"
}

var myShoesString1 = ShoesString.Nike;
var myShoesString2 = ShoesString.Adidas;
console.log(myShoesString1, myShoesString2); // '나이키', '아디다스'
하나라도 문자형으로 쓰면 해당 ENUM은 문자형 ENUM이 된다. 문자형일때는 값을 선언해주어야하고, 하나라도 선언을 하지 않으면 에러가 난다.

 

 

실제 활용해보기

yes면 정답입니다. no면 오답입니다. 함수 만들기 (일반 함수)

function askEnum(answer: string) {
  if (answer === 'yes') {
    console.log("정답입니다.")
  }
  if (answer === 'no') {
    console.log("오답입니다.")
  }
}
askEnum("yes");
askEnum("no");
askEnum("y");
yes 또는 no 를 넘기면 정답입니다 또는 오답입니다를 찍는 함수를 만든다고 했을때, 작업하다보면 y인지 Y인지 yes인지 무엇을 넘겨야하는지 몰라 열심히 찾아서 넘겨야하는 경우가 있다. 이럴때 typescript에서는 enum을 사용하여 깔끔한 코드를 만들 수 있다.

 

enum을 사용하여 위에 함수 바꿔보기

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

function askEnum(answer: Answer) {
  if (answer === Answer.Yes) {
    console.log("정답입니다.")
  }
  if (answer === Answer.No) {
    console.log("오답입니다.")
  }
}
askEnum(Answer.Yes);
askEnum(Answer.No); 
askEnum("yes");  //오류 표시
우선 askEnum 인자로 들어오는 answer의 type을 enum 으로 정의한 Answer로 바꿨고, 함수를 실행할때 enum으로 정리된 값이 아니면 오류표시가 나는 것을 확인할 수 있다. 따라서 좀더 정확하면서 예외케이스가 줄어들게 코드를 짤 수 있다.

 

 

반응형