[타입스크립트] enum 타입이란?
주의 : 본 포스트는 udemy강의를 들으며
공부를 위해 정리한 내용이나,
수강자의 부족한 지식으로 인해 정확하지 않을 수 있습니다.
특징 : 자바스크립트에는 enum 타입이 없다.
방식: 식별자들을 중괄호 쌍 안에 넣는 방식
{NEW, OLD}
enum Role
enum Role {} ;
enum Role {ADMIN, READ_ONLY, AUTHOR}
const person = {
name: "jenner",
age: 20,
hobbies: ["Sports", "Cooking"],
role: Role.ADMIN
}
if (person.role === Role.AUTHOR){
console.log("is author");
}
이 모든 작업은 라벨을 숫자로 할당하게 해주는 enum으로 수행했다는 점이 중요하다.
이것을 tsc app.ts 명령어로 컴파일해보면,
아래와 같이 코드가 변경되는 것을 볼 수 있다.
var Role;
(function (Role) {
Role[Role["ADMIN"] = 0] = "ADMIN";
Role[Role["READ_ONLY"] = 1] = "READ_ONLY";
Role[Role["AUTHOR"] = 2] = "AUTHOR";
})(Role || (Role = {}));
var person = {
name: "jenner",
age: 20,
hobbies: ["Sports", "Cooking"],
role: Role.ADMIN
};
if (person.role === Role.AUTHOR) {
console.log("is author");
}
이러한 복잡한 코드를 enum을 사용하여 타입스크립트에서는 위와 같이 간단하게 사용할 수 있게 되는 것이다.
Role의 ADMIN 식별자 위에 마우스 커서를 가져다 대면,
아래와 같이 나오게 된다.
(enum member) Role.ADMIN = 0
필요에 따라 숫자를 모든 식별자에
값으로 할당할 수 있다.
enum Role {
ADMIN =5,
READ_ONLY,
AUTHOR,
}
이런식으로 첫 번째 식별자에 숫자 5를 할당하면
순서대로 그 다음 식별자에는 6, 그다음은 7로 할당된다.
또한 임의의 숫자를 모든 식별자에
고유한 값으로 할당할 수도 있다.
enum Role {
ADMIN =5,
READ_ONLY= 10,
AUTHOR =100,
}
텍스트도 할당이 가능하다.
텍스트만 할당하기도, 혼합하기도 가능하다.
enum Role {
ADMIN = "ADMIN",
READ_ONLY= 10,
AUTHOR =100,
}
왜 enum 타입이 쓰이는가?
TypeScript enum을 사용하는 이유
(본 글은 TypeScript 입문자 중 enum 기능이 있는 다른 언어를 사용해 본 경험이 없는 분들을 위해 쓰여졌습니다. 예제 코드를 TypeScript playground에 붙여 넣고, 마우스 포인터를 변수 위에 둬서 변수의
medium.com
위의 글을 간단하게 정리해보자면,
어떤 서비스를 제공할 때
서비스에서 지원할 수 있는 타입은
사전에 한정되어있는 경우가 많다. (ex: 지원할 수 있는 언어)
만일 그 타입을 지원할 수 없는 다른 것으로 실수로 정했을 경우,
에러가 나도록 하여야 할 것이다.
그래야 사전에 코드상의 에러를 방지할 수 있을 것이다.
어떠한 상수에 할당할 변수 (타입 등)을 한정시킨다면
범위를 좁혀나갈 수 있을 것이다.
또한 실제적인 타입의 이름이 길다면
그것을 가리키는 변수를 지정하여
가독성을 높일 수 있게 되는 것이다.
그러므로 enum 타입을 사용하는 것인데,
typescript에서는 enum 타입을 사용하면
사실 실수로 다른 타입을 지정하여도
오류가 나지 않는 경우가 있기 때문에
enum타입보다는 리터럴 타입과 union타입을 함께 사용하는 것이 좋다.