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으로 정리된 값이 아니면 오류표시가 나는 것을 확인할 수 있다. 따라서 좀더 정확하면서 예외케이스가 줄어들게 코드를 짤 수 있다.
반응형
'Typescript' 카테고리의 다른 글
[typescript 기본] 제네릭 문법 (0) | 2022.01.06 |
---|---|
[typescript 기본] class와 prototype (0) | 2022.01.03 |
[typescript 기본] Union type 과 Intersection type 차이 ( | 와 &) (0) | 2021.12.28 |
[typescript 기본] type과 interface (0) | 2021.12.28 |
[typescript 기본] interface란? (0) | 2021.12.28 |