Community

사실 많은 프로그래밍 언어에서 열거형을 사용하고 해당 문법으로 생산성이 증가하는데요. 하지만 Typescript의 열거형은 몇 가지 문제를 지니고 있습니다. 바로 예상과 다르게 동작하는 부분들이 있

사실 많은 프로그래밍 언어에서 열거형을 사용하고 해당 문법으로 생산성이 증가하는데요. 하지만 Typescript의 열거형은 몇 가지 문제를 지니고 있습니다. 바로 예상과 다르게 동작하는 부분들이 있는데요! 1. 숫자형 enum의 경우 파라미터로 enum Something { A, B, C, D }를 해놓고 something(parameter: Something) 함수에 파라미터로 0,1,2,3 외에 다른 숫자를 집어넣어도 컴파일 시 에러가 나지 않습니다. 2. 문자형 enum의 경우 TS는 구조적 타이핑을 사용하는데 다른 타입과는 달리 enum의 경우는 명목적 타이핑을 사용합니다. 따라서, enum Something1 { A = 'A' }, enum Something2 { A = 'A' }에서 Something1.A === Something2.A 값은 실제로 같은 문자열임에도 불구하고 false입니다. TS를 빡빡하게 쓰신다면 애초에 겹칠 수 없는 값으로 나오기도 할 것입니다. (Something1과 Something2가 객체라면 그러지 않았겠죠?) 이와 같이 enum 동작에는 문제가 있긴 합니다. 질문에 작성하신 getCategoryDataByCategory의 파라미터 타입을 enum으로 하면 위에 말씀드린대로 음수나 1000 이런 값이 나와도 컴파일 시 오류를 거르지 못하니까요! 그러니 작성자분께서 작성하신 코드가 아무래도 더 type safe하고 런타임에도 문제가 없을 코드이긴 합니다. 하지만 그럼에도 불구하고 저도.. enum을 잘 애용하고 있긴 합니다..ㅎ 아무래도 간결한 코드와 타입체크 그리고 생산성에 있어 쓰고 있는 것 같습니다. 질문하신대로 가독성이 떨어지긴 하니까요ㅎㅎ TS에서 enum 논쟁은 언제나 끝이 없는거 같네요..! + 아 추가로 덧붙이자면 enum도 요샌 항상 트리세이킹 문제가 생기진 않는거 같더라구요!

알림

알림이 없습니다