[Typescript] 타입스크립트 이넘

problem_hun·2023년 3월 9일
0

타입스크립트

목록 보기
9/16

이넘 (Enums)

이넘은 특정 값들의 집합을 의미하는 자료형이다. 드롭다운이나 정해져 있는 목록의 값들을 지정할 때 사용할 수 있다.

이넘은 다른 프로그래밍 언어를 다뤄본 사람들에게 친숙한 타입이다. 타입스크립트에서는 숫자형 이넘문자형 이넘을 지원한다

숫자형 이넘

신발의 브랜드를 값으로 가지는 Shoes라는 이넘을 만들어보자.
예약어 enum 다음에 <이넘의 이름>을 입력하고 중괄호 사이에 데이터를 입력하면 된다.

enum Shoes {
  아디다스,
  나이키,
  뉴발란스 = 10,
  아식스,
}

console.log(Shoes.아디다스); //0
console.log(Shoes.나이키); //1
console.log(Shoes.뉴발란스); //10
console.log(Shoes.아식스); //11

이넘의 데이터에 별도의 값을 지정하지 않으면 숫자형 이넘으로 취급한다.
데이터에 숫자를 할당해 주면 그 다음 데이터부터는 1씩 더한 값이 데이터의 값이 된다.

문자형 이넘

이번엔 데이터에 문자열을 할당해 보자.

enum Shoes {
  아디다스,
  나이키,
  뉴발란스 = "newBalance",
  아식스 = "asics",
}

console.log(Shoes.아디다스); //0
console.log(Shoes.나이키); //1
console.log(Shoes.뉴발란스); //newBalance
console.log(Shoes.아식스); //asics

이넘의 활용

위의 코드만 봐서는 어떻게 활용할 지 감이 잘 안 올 수 있으니 활용 사례를 알아보자.

파라미터로 'yes' 라는 문자열이 들어오면 '정답!'이라는 로그를 찍어주고,
'no' 라는 문자열이 들어오면 '오답!'이라는 로그를 찍는 askQuestion이라는 함수를 만들어보자.

function askQuestion(answer: string) {
  if (answer === "yes") console.log("정답!");
  if (answer === "no") console.log("오답!");
}

askQuestion("Yes");
askQuestion("Y");
askQuestion("야스");
askQuestion('yes'); // 정답!

만약에 실수로 파라미터로 그 비슷한 다른 값을 넣게 된다면 아무일도 일어나지 않는다.
이는 의도치 않은 결과를 만들 수 있다.

그렇다면 Answer라는 이넘을 만든 다음에 이넘의 데이터로만 파라미터로 받을 수 있다고 만들어보자.

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


function askQuestion(answer: Answer) {
  if (answer === Answer.Yes) console.log("정답!");
  if (answer === Answer.No) console.log("오답!");
}

askQuestion("Yes");askQuestion("Y");askQuestion("야스");askQuestion('yes');askQuestion(Answer.Yes); // 정답!

askQuestion의 파라미터로 이넘의 데이터가 아닌 다른 타입의 값을 넣으려고 하면 에러를 표시한다. 이렇게 되면 좀 더 정확한 코드가 되면서 예외처리의 케이스를 많이 줄일 수 있다.

profile
문제아

0개의 댓글