웹 코드 분석하다가 타입을 enum으로 지정한걸 발견함 ㅇㅅㅇ

근데 ts에서 enum의 문제는

enum으로 타입을 지정한 변수에는 enum에서 명시하지 않은
다른 숫자값을 넣어도 컴파일 에러가 나지 않음 ㅇㅅㅇ

예시로

enum Days {
 Monday: 1,
 Tuesday: 2
}

let day: Days = Days.Monday;
day = Days.Tuesday;
day = 100; // 에러 안남!

그래서 보통 웹 클라이언트 개발할 땐 enum 대신 Union type이나 유니온 스트링 리터럴로 타입을 지정해서 미리 정한 타입 안에서 값을 통제하는게 더 안전함.

기존 코드는 왜 이렇게 한 걸까 알아보니 개발하는 웹 서비스와 운영 중인 모바일 클라이언트에서 데이터 공유를 해야 하기 때문이었음.

모바일 클라이언트에서 쓰는 언어에서는 Union type이 없어서 서로 이해 가능하도록 enum을 쓴 거였음

그래서 웹, 모바일 클라이언트 간 소통이 필요하다면 enum을 사용하는게 맞대 ㅇㅅㅇ