as const와 enum type의 차이

박희수·2023년 11월 9일
0
post-thumbnail

as const와 enum type의 차이와 각각 어느 순간에 사용하는게 좋을까❓

enum Color {
red,
blue,
green
}

const Color = {
red : 0,
blue : 1,
green : 2,
} as const;

타입스크립트에서 가독성을 높이기 위한 일환으로 서로 연관된 상수들을 하나의 네임스페이스에 묶어 관리할 때 위와 같이 enum 키워드를 사용해 enum type을 선언하거나 객체 리터럴에 as const 라는 type assertion을 사용한다.

두 문법은 명확한 차이를 갖고 있다.

목적의 차이 :

enum과 as const는 탄생한 목적 자체가 다르다.
enum은 다른 언어의 Enumeration 문법처럼 서로 연관된 상수들을 하나의 namespace로 묶어 추상화 시키기 위해 도입된 것.
as const는 리터럴 타입의 추론 범위를 줄이고 값의 재할당을 막기 위한 목적으로 만들어진 것.

언제 사용해야 하는가 :

타입스크립트에서 const는 좁은 범위의 타입을 추론하고, let은 넓은 범위의 타입을 추론한다. 그러나 객체와 배열에서는 const로 선언해도 내부 프로퍼티 변경이 가능하다. 이때 as const를 사용하면 프로퍼티가 readonly가 되고, 리터럴 값으로 타입 추론이 이루어진다.
즉, as const는 불변성을 제공해야 하거나 타입 추론이 더 명확한 경우에 사용해햐 한다.

타입스크립트에서 enum은 열거형 타입으로, 특정 값의 목록을 정의하고 관리하는 용도이다. 주로 목록을 정의할 때 사용하고, 추후 변하지 않는 값들로 구성한다. 또한 enum은 트랜스파일 결과를 봤을 때 각 프로퍼티에 특정 값들이 매핑됨과 동시에 역방향으로도 매핑이 된다.
즉, enum은 열거형 타입과 고정된 상수 값 목록을 관리하기 위한 경우에 사용해야 한다.

profile
프론트엔드 개발자입니다 :)

0개의 댓글