티스토리 뷰
▶타입스크립트 이넘(Enums)
이넘은 특정 값들의 집합을 의미하는 "자료형"입니다.
🔎 이넘(Enums) ? - 사용될 수 있는 값을 묶어두자!
이넘은 특정한 값들을 집합으로 가지고 있는 자료형입니다.
예를 들면 아래와 같은 목록이 이넘이 될 수 있습니다.
enum Shoes {
Nike,
Adidas,
}
🔎 이넘 사용하기
이넘으로 정의하게 되면 딱 그 값들만 사용할 수 있게 되는데요.
위에서 정의한 Shoes라는 이넘을 사용해 봅시다.
🔎 숫자형 이넘
만약에 다음과 같이 작성했다고 해봅시다.
var myShose = Shoes.Nike;
console.log(myShose); // 0
그러면 내가 Nike에 값을 할당하지도 않았는데 콘솔로 찍어보게 되면 0이 출력되게 됩니다.
초기값을 할당해주지 않으면 알아서 위에서부터 아래로 차례대로 0부터 1, 2, 3, ... 할당되게 됩니다.
그런데 중간에 값을 할당해 주고 그 다음은 또 할당해 주지 않으면 그 값 다음 숫자로 할당을 알아서 또 해줍니다.
enum Shoes {
// 별도의 값을 지정하지 않으면 전부다 숫자형 타입을 취급
Nike, // 0
Adidas, // 1
NewBalance, // 2
Puma = 10,
fila, // 11
}
🔎 숫자형 이넘 사용하기
다음처럼 이넘을 하나 선언해서 사용해보겠습니다.
enum ThisResponse {
No = 0,
Yes = 1,
}
function response(recipient: string, message: ThisResponse): void {
// ...
}
response('Doeunn Blog', ThisResponse.Yes);
response('Doeunn Blog', 'Yes'); // Error
코드의 마지막 두 줄을 유심있게 봐야 하는데요.
이넘을 선언하고 파라미터에게 이넘이 적용 되었다면, 그 자리는 반드시 이넘을 통해서만 인자를 넘겨주어야 합니다.
바로 ThisResponse.Yes는 되고 'Yes'는 에러가 발생하는 이유이기도 합니다.
숫자형 이넘에서 주의할 점
만약 이넘 값에 다른 이넘 타입의 값을 사용하면 선언하는 이넘의 첫 번째 값에 초기화를 해줘야 한다는 점입니다.
enum Wrong {
A = getSomeValue(),
B, // Error, 초기화가 필요합니다.
}
🔎 문자형 이넘 - 무조건 모든 값 초기화 필수!
문자형 이넘은 앞에서 살펴본 숫자형 이넘과 개념적으로는 거의 비슷한데요.
일단 문자형 이넘은 이넘 값 전부 다 특정 문자 또는 다른 이넘 값으로 초기화 해줘야 합니다.
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
또한, 문자형 이넘에는 숫자형 이넘과는 다르게 auto-incrementing이 없습니다.
대신 디버깅을 할 때 숫자형 이넘의 값은 가끔 불명확하게 나올 때가 있지만
문자형 이넘은 항상 명확한 값이 나와 읽기 편합니다.
🔎 복합 이넘(Heterogeneous Enums) - 최대한 지양하자
기술적으로 이넘에 문자와 숫자를 혼합하여 생성할 수는 있습니다.
enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES",
}
하지만, 이 방식을 권고하고 있지는 않습니다.
최대한 같은 타입으로 이루어진 이넘을 사용하는 게 좋습니다.
'프론트엔드 > TypeScript' 카테고리의 다른 글
[TypeScript] 타입스크립트 클래스(Class) (0) | 2023.01.03 |
---|---|
[TypeScript] 자바스크립트 프로토타입(Prototype) - 프로토타입으로 상속하여 객체를 재사용하자 (0) | 2023.01.03 |
[TypeScript] 타입스크립트 인터섹션 타입(Intersection Type) (0) | 2023.01.02 |
[TypeScript] 타입스크립트 유니온 타입(Union Type) - 타입을 2개 이상 허용하자 (0) | 2023.01.02 |
[TypeScript] 타입스크립트 타입 추론(Type Inference) (0) | 2023.01.02 |
- Total
- Today
- Yesterday
- 파이썬
- 데이터분석
- 리액트
- react-query
- 자바스크립트 기초
- 디프만
- 자바
- jest
- react
- styled-components
- JSP
- Python
- 인프런
- TypeScript
- HTML
- 딥러닝
- testing
- 스타일 컴포넌트 styled-components
- 머신러닝
- 프론트엔드 기초
- next.js
- 프론트엔드
- 리액트 훅
- 자바스크립트
- 프론트엔드 공부
- rtl
- 프로젝트 회고
- 타입스크립트
- frontend
- CSS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |