![[TypeScript] μ΄κ±°ν(Enums)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz5iG2%2FbtsJUiJbOFC%2Fjtq8aoL8rwclIzeGdBTIBK%2Fimg.png)
π μ΄κ±°ν(Enums)μ΄λ 무μμΈκ°μ?
μ΄κ±°ν(Enums)μ κ΄λ ¨λ μμλ€μ μ§ν©μ νλμ μ΄λ¦μΌλ‘ λ¬Άμ΄μ£Όλ νμ μ€ν¬λ¦½νΈμ κΈ°λ₯μ΄μμ. μλ₯Ό λ€μ΄, μμΌμ΄λ λ°©ν₯μ²λΌ μ νλ κ°λ€μ λͺ©λ‘μ μ μν λ μ μ©ν΄μ. μ΄λ κ² νλ©΄ κ°λ μ±μ΄ λμμ§κ³ , μ½λ λ΄μμ μμλ€μ ν¨κ³Όμ μΌλ‘ κ΄λ¦¬ν μ μμ΄μ.
λΉμ λ₯Ό λ€μ΄λ³΄μλ©΄, μ¬λ¬ κ°μ§ λ§μ΄ μλ μμ΄μ€ν¬λ¦Ό κ°κ²μμ λ©λ΄λ₯Ό κ³ λ₯Ό λ, κ° λ§μ λ²νΈλ₯Ό λΆμ¬μ μ£Όλ¬Ένλ κ²κ³Ό κ°μμ. λ²νΈλ§ λ³΄κ³ λ κ·Έκ² μ΄λ€ λ§μΈμ§ μ½κ² μ΄ν΄ν μ μμ£ . μ΄κ±°νμ μ΄λ° λ²νΈλ₯Ό μλ―Έ μκ² λΆμ¬νλ κ²κ³Ό λΉμ·ν΄μ.
π₯οΈ μ΄κ±°νμ μ’ λ₯
νμ μ€ν¬λ¦½νΈμμ μ΄κ±°νμ ν¬κ² λ κ°μ§ μ’ λ₯λ‘ λλμ΄μ: μ«μν μ΄κ±°νκ³Ό λ¬Έμμ΄ μ΄κ±°νμ΄μμ.
1. μ«μν μ΄κ±°ν
- μ«μν μ΄κ±°νμ μ«μ κ°μ μ΄λ¦μ λΆμ΄λ λ° μ¬μ©λΌμ. 첫 λ²μ§Έ κ°μ μ«μλ₯Ό ν λΉνλ©΄, μ΄ν κ°λ€μ μλμΌλ‘ 1μ© μ¦κ°ν΄μ.
enum Direction {
Up = 1,
Down,
Left,
Right
}
console.log(Direction.Up); // 1
console.log(Direction.Down); // 2
console.log(Direction.Left); // 3
console.log(Direction.Right); // 4
μ΄ μμ μμ 'Direction' μ΄κ±°νμ λ€ κ°μ§ λ°©ν₯μ λνλ΄μ. 'Up'μ΄ 1λ‘ μμνκ³ , μ΄ν κ°λ€μ μλμΌλ‘ μ¦κ°ν΄μ.
2. λ¬Έμμ΄ μ΄κ±°ν
- λ¬Έμμ΄ μ΄κ±°νμ κ° μ΄κ±°ν κ°μ κ³ μ λ λ¬Έμμ΄λ‘ μ§μ ν μ μμ΄μ. μ«μ λμ μλ―Έ μλ λ¬Έμμ΄μ μ¬μ©ν λ μ μ©ν΄μ.
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
console.log(Direction.Up); // "UP"
console.log(Direction.Down); // "DOWN"
console.log(Direction.Left); // "LEFT"
console.log(Direction.Right); // "RIGHT"
μ΄ μμ μμ 'Direction' μ΄κ±°νμ κ° λ°©ν₯μ λνλ΄λ κ³ μ ν λ¬Έμμ΄ κ°μ κ°κ³ μμ΄μ.
3. νΌν©ν μ΄κ±°ν
- μ«μνκ³Ό λ¬Έμμ΄νμ ν¨κ» μ¬μ©ν μλ μμ΄μ. νμ§λ§ κ°λ μ± μΈ‘λ©΄μμλ κΆμ₯λμ§ μμμ.
enum MixedEnum {
Yes = "YES",
No = 0
}
console.log(MixedEnum.Yes); // "YES"
console.log(MixedEnum.No); // 0
μ΄ μμ λ λ¬Έμμ΄κ³Ό μ«μλ₯Ό νΌν©ν μ΄κ±°νμ 보μ¬μ€μ.
π€ μ΄κ±°νμ νμ© μ
μ΄κ±°νμ μ½λμ κ°λ μ±κ³Ό μ μ§ λ³΄μμ±μ λμ΄κΈ° μν΄ μμ£Ό μ¬μ©λΌμ. νΉν νΉμ κ°λ§ νμ©λλ μν©μμ λ§€μ° μ μ©ν΄μ.
1. ν¨μμμ μ΄κ±°νμ μ¬μ©ν΄ 쑰건 μ²λ¦¬νκΈ°
enum Status {
Success = "SUCCESS",
Failure = "FAILURE",
Pending = "PENDING"
}
function checkStatus(status: Status) {
switch (status) {
case Status.Success:
console.log("μ±κ³΅!");
break;
case Status.Failure:
console.log("μ€ν¨!");
break;
case Status.Pending:
console.log("λκΈ° μ€...");
break;
}
}
checkStatus(Status.Success); // μ±κ³΅!
checkStatus(Status.Failure); // μ€ν¨!
checkStatus(Status.Pending); // λκΈ° μ€...
μ΄ ν¨μλ μ£Όμ΄μ§ μνμ λ°λΌ λ€λ₯Έ λ©μμ§λ₯Ό μΆλ ₯ν΄μ.
μ΄κ±°νμ μ¬μ©νλ©΄, μνμ λ²μλ₯Ό μ νν μ μμ΄μ μλͺ»λ κ°μ μ¬μ©νλ κ²μ λ°©μ§ν μ μμ΄μ.
2. μ΄κ±°νμ νμ©ν΄ νΉμ μν κ΄λ¦¬νκΈ°
enum Role {
Admin = "ADMIN",
User = "USER",
Guest = "GUEST"
}
function checkRole(role: Role) {
if (role === Role.Admin) {
console.log("κ΄λ¦¬μ κΆνμ΄ μμ΅λλ€.");
} else if (role === Role.User) {
console.log("μΌλ° μ¬μ©μμ
λλ€.");
} else {
console.log("μλμ
λλ€.");
}
}
checkRole(Role.Admin); // κ΄λ¦¬μ κΆνμ΄ μμ΅λλ€.
checkRole(Role.User); // μΌλ° μ¬μ©μμ
λλ€.
checkRole(Role.Guest); // μλμ
λλ€.
μ΄κ±°νμ μ¬μ©ν΄ μ¬μ©μμ μν μ κ΄λ¦¬ν μ μμ΄μ. κ° μν μ λ¬Έμμ΄λ‘ μ μνλ©΄ μ½λκ° λμ± λͺ νν΄μ Έμ.
π¨ μ£Όμν μ
- μλ μ¦κ°λ 첫 λ²μ§Έ κ°μ λͺ μμ μΌλ‘ μ€μ νμ§ μμ λλ§ λμν΄μ. 첫 λ²μ§Έ κ°μ μ€μ νλ©΄ μ΄ν κ°λ€μ 1μ© μ¦κ°νμ§λ§, 첫 λ²μ§Έ κ°μ μλ΅νλ©΄ κΈ°λ³Έκ°μ 0μ΄μμ.
- μ΄κ±°ν κ°μ νμ μ΄ μ€μν΄μ. μ«μν μ΄κ±°νκ³Ό λ¬Έμμ΄ μ΄κ±°νμ νΌμ©ν λλ κ°λ μ±μ΄λ μΌκ΄μ±μ κ³ λ €ν΄μΌ ν΄μ.
π κ²°λ‘
μ΄κ±°ν(Enums)μ μμ κ°λ€μ μ§ν©μ μλ―Έ μκ² λ¬Άμ΄μ£Όλ κΈ°λ₯μΌλ‘, νμ μ€ν¬λ¦½νΈμμ μμ£Ό μ¬μ©λΌμ. μ«μν μ΄κ±°νκ³Ό λ¬Έμμ΄ μ΄κ±°νμ μ¬μ©ν΄ μ½λμ κ°λ μ±μ λμ΄κ³ , κ°μ λ²μλ₯Ό μ ννμ¬ μ€λ₯λ₯Ό λ°©μ§ν μ μμ΄μ.
π μΆκ° μ 보
- νμ μ€ν¬λ¦½νΈμ μ΄κ±°ν(Enums)μ λν λ κΉμ μ΄ν΄λ₯Ό μνμ λ€λ©΄, 곡μ λ¬Έμμμ μμΈν μ 보λ₯Ό μ°Ύμλ³Ό μ μμ΄μ.
'Language > TypeScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TypeScript] Never νμ (1) | 2024.10.06 |
---|---|
[TypeScript] νμ κ°λ(Type Guard) (0) | 2024.04.20 |
[TypeScript] μ‘°κ±΄λΆ νμ (0) | 2024.02.19 |
[TypeScript] Interfaceμ Typeμ μ°¨μ΄ (0) | 2023.12.21 |
ν¬μ€ν μ΄ μ’μλ€λ©΄ "μ’μμβ€οΈ" λλ "ꡬλ ππ»" ν΄μ£ΌμΈμ!