
이번 포스팅은 타입스크립트 기본타입 중 Enum 타입에 대해 알아보겠습니다.
'Enum 타입'이란 Enumerable Type이라고 쓰며, 다른 말로 열거형 타입이라고도 합니다. 그렇다면 왜 열거형이라는 이름이 붙었을까요? 이제부터 그 이유를 알아봅시다,
'Enum 타입'은 자바스크립트에는 없고 타입스크립트에 있는 타입이라서 생소하신 분들도 있을 것입니다 'Enum 타입'이란 여러가지 값들에 각각 이름을 부여해 열거해두고 사용하는 타입을 말합니다.
그럼 Enum 타입은 어떤 상황에서 사용할까요?
항상 변하지 않는 상수의 값을 그룹화 하고, 각각의 값에 의미 있는 이름을 부여해야하는 상황에서 주로 사용합니다. 이해가 잘 안가신다구요?
그럼 예시와 함께 보도록 하겠습니다.
각각의 권한이 다른 3명의 user가 있다고 가정해봅시다.
const user1 = {
name : "갑을병",
role : 0 // <- 관리자
};
const user2 = {
name : "홍길동",
role : 1 // <- 일반 유저
};
const user3 = {
name : "아무개",
role : 2 // <- 게스트
};
이렇게 role에 숫자를 다르게하여 관리자인지 일반 유저인지 게스트인지 구분하도록 작업했습니다. 만약 시간이 오래지나면 어떤 것이 게스트인지 호스트인지 번호만으로는 헷갈리게 됩니다. 이런 경우가 Enum 타입이 필요한 경우입니다.
이제 본격적으로 Enum을 사용해서 위의 코드를 수정해보겠습니다.
enum Role {
// 기본적으로 이런 형태가 됩니다.
}
Enum을 사용할때는 타입 별칭을 사용하는 것처럼 enum이라고 쓰고 그 뒤에 이름을 적어야합니다. 여기서는 role과 관련된 것이므로 Role이 쓰겠습니다. 타입 별칭과 다르게 '='이 없습니다.
enum Role {
ADMIN = 0,
USER = 1,
GUEST = 2,
}
이어서 써보면 이런식으로 사용됩니다.
여기서는 번호를 각각 할당해줬지만 번호를 쓰지 않아도 자동으로 숫자가 순서대로 들어갑니다.
enum도 만들었으니 user에 있는 role도 이런식으로 쓸 수 있습니다.
const user1 = {
name : "갑을병",
role : Role.ADMIN, // 0 <- 관리자
language: Language.korean,
};
const user2 = {
name : "홍길동",
role : Role.USER // 1 <- 일반 유저
};
const user3 = {
name : "아무개",
role : Role.GUEST // 2 <- 게스트
};
여기에서 각각의 Role에 아까 지정해뒀던 번호가 들어가게 됩니다.
이렇게 사람들이 헷갈리지 않도록 각각의 이름을 새로 부여해서 사용하는 것이 'Enum 타입' 입니다.
아까 enum을 이런식으로도 쓸 수 있다고 했는데요.
enum Role {
ADMIN,
USER,
GUEST,
}
이렇게 순서가 부여될때 10부터 할당이 되도록 쓸 수도 있습니다.
enum Role {
ADMIN = 10, // 10
USER, // 11
GUEST, // 12
}
그리고 중간부터도 할당이 가능합니다.
enum Role {
ADMIN, // 0
USER = 10, // 10
GUEST, // 11
}
그래서 enum을 사용할때는 자동으로 숫자가 할당되는 것 외에 이렇게 우리가 중간에 다른 숫자로 할당도 해줄 수 있습니다.
그리고 이렇게 숫자를 할당해 주는 것을 숫자형 enum이라고 합니다.
숫자형만 살펴봤는데 문자형 enum도 있습니다.
enum Language {
korean = "ko",
english = "en",
}
만약 쓰인다면 이런식으로 사용됩니다.
이렇게 해서 오늘은 'Enum 타입'에 대해 알아봤습니다.
이것으로 포스팅을 마치겠습니다.
위의 내용은 <한 입 크기로 잘라먹는 타입스크립트> 강의 내용을 참고하면서 작성했습니다.