상태 값 같은 거 정해진 몇 개 중에 하나만 들어오게 하고 싶은데요. 검색해 보니까 enum 쓰라는 사람도 있고 그냥 union 쓰라는 사람도 있어서 뭘 골라야 할지 모르겠어요.


제가 지금 쓰는 건 enum이에요.


enum Status {
  Active = "active",
  Inactive = "inactive",
}

function setStatus(s: Status) { /* ... */ }


근데 이렇게 하니까 API에서 받은 문자열 "active"를 바로 못 넣고 Status.Active 이렇게 써야 하더라고요. 서버 응답 값 넣으려면 매번 캐스팅해야 해서 좀 번거로워요.


그래서 union으로 바꿔볼까 하는데 이렇게요.


type Status = "active" | "inactive";

function setStatus(s: Status) { /* ... */ }


이렇게 하면 문자열 그대로 넣어도 되고 편한 거 같긴 한데요. 그럼 enum은 대체 언제 쓰는 건가요? 컴파일하면 코드가 더 생긴다는 말도 봤고 const enum이란 것도 있던데 헷갈려요. 실무에서는 보통 뭘 더 많이 쓰는지, 각각 장단점이 뭔지 정리해주시면 감사하겠습니다.