유형 스크립트의 열거형 대 상수 차이
만약 제가 const 변수를 사용해야 한다면, 저는 형식 안전성을 가지고 있기 때문에 이 접근법을 사용합니다.
export class LocalStorage {
static USER_INFO = "user-info";
static PROFILE_INFO = "profile-info";
}
하지만 우리는 사용할 수 있을 것 같습니다.string enums
이와 같이:
export enum LocalStorage {
USER_INFO = "user-info";
PROFILE_INFO = "profile-info";
}
이 두 가지 접근 방식의 차이점은 무엇입니까?
@VLAZ의 의견에 동의합니다. 최상의 접근 방식은 분명히 다를 수 있습니다.열거형을 사용할 때 가장 중요한 이점은 함수의 유형 안전성을 향상시킬 수 있다는 것입니다.
export enum LocalStorage {
USER_INFO = "user-info",
PROFILE_INFO = "profile-info"
}
function doSomething(l: LocalStorage) {
}
doSomething("foo"); // error, "foo" is not LocalStorage
doSomething("user-info"); // error, "user-info" is not LocalStorage
doSomething(LocalStorage.USER_INFO); // compiles
전반적으로 열거형은 향상된 유형 안전성을 제공하며(적절한 경우), 일반적으로 새 멤버로 확장하는 것이 더 간단합니다.
열거형은 상수를 논리적으로 그룹화한 것입니다.다른 색을 사용하고 싶다고 가정해 보겠습니다.그런 다음 색상 열거를 정의된 모든 색상 값으로 구성합니다.계정을 예로 들어 보겠습니다.현재, 저축, 대출, 반복의 값으로 구성된 유형입니다.논리적 그룹화입니다.모든 항목에 대해 정의할 수 있는 상수입니다.
이제 열거형 이름이 논리적 그룹화와 관련이 있는지 확인해야 합니까?
당신의 경우 Enum 이름은 LocalStorage이지만 아래의 값이 Enum으로 정당화되지 않습니다.
두 가지 접근 방식 모두 간단한 시나리오에 대해 작업을 수행합니다.의도한 목적을 위해 구조물을 사용하는 것은 항상 좋은 관행입니다.
당신의 수업은 무심코 단지 유지하는 것 이상의 것으로 진화할지도 모릅니다.static
우려 사항의 통합으로 이어집니다.예를 들어, 향후에는 로컬 저장소, 인덱스 DB 또는 쿠키에 대해 CRUD 기능을 추가해야 한다고 생각할 수 있습니다.
그러면 둘 중에 하나를 선택할 수 있습니다.const enum
상심한enum
s.
컴파일이 필요한 경우enum
실행 시 일반 TypeScript를 사용합니다.enum
.
A const enum
형식 안전을 돕기 위해 존재합니다.그것의 사용법은 인라인화되고,const enum
컴파일 중에 삭제됩니다.
언급URL : https://stackoverflow.com/questions/58415981/enums-vs-constant-differences-on-typescript
'programing' 카테고리의 다른 글
파이썬의 복소수 (0) | 2023.06.08 |
---|---|
WidgetFlutterBinding.에서 보장하는 사항이니셜라이즈() do? (0) | 2023.06.08 |
문자 배열의 null 종료 (0) | 2023.06.08 |
Oracle SQL 쿼리: 시간을 기준으로 그룹별 최신 값 검색 (0) | 2023.06.08 |
로컬 인덱스별 페이징을 위한 Oracle 계획에 파티션당 STOPKEY가 없습니다. (0) | 2023.06.08 |