Enum

1. ์—ด๊ฑฐํ˜•(Enum)์ด๋ž€?

  • TypeScript์˜ ์—ด๊ฑฐํ˜•(Enum)์€ ํŠน์ • ๊ฐ’์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋จ.

  • Enum์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์ˆ˜๊ฐ’์„ ๋Œ€์‹ ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” Enum์ด ๋งŽ์ด ์‚ฌ์šฉ

  • Enum์€ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ€๋…์„ฑ ๋†’๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ์˜คํƒ€์™€ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•ด์คŒ

  • JavaScript์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Enum์„ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ, TypeScript์—์„œ๋Š” ๋ฌธ์žํ˜• Enum๊ณผ ์ˆซ์žํ˜• Enum์„ ์ง€์›ํ•˜๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ง€์›

    enum Color {
      
      // Color ๋ผ๋Š” Enum ์ •์˜
      // Enum์˜ ๊ฐ’์€ ์•„๋ž˜ ์„ธ ๊ฐœ
      Red, 
      Green,
      Blue,
    }

2. ์ˆซ์žํ˜• ์—ด๊ฑฐํ˜•(Enum)

  • Enum์€ ๋””ํดํŠธ ๊ฐ’์œผ๋กœ ์ˆซ์žํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐ ๊ฐ’์€ ์ž๋™์œผ๋กœ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ 1์”ฉ ์ฆ๊ฐ€

  • ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜๋™์œผ๋กœ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ์Œ

      enum Color {
      Red = 1,
      Green = 2,
      Blue = 4,
      }
  • Enum ๊ฐ’์— ๋Œ€ํ•ด ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์ˆ˜ํ–‰๋„ ๊ฐ€๋Šฅ

    enum Color {
      Red = 1,
      Green = 2,
      Blue = 4,
    }
    
    let c: Color = Color.Green;
    let greenValue: number = Color.Green;
    let blueValue: number = Color.Blue;
    
      console.log(c); // 2
      console.log(greenValue); // 2
      console.log(blueValue); // 4 

3. ๋ฌธ์žํ˜• ์—ด๊ฑฐํ˜•(Enum)

  • ๋ฌธ์žํ˜• Enum์€ Enum์˜ ๊ฐ’์„ ์ „๋ถ€ ๋‹ค ํŠน์ • ๋ฌธ์ž ๋˜๋Š” ๋‹ค๋ฅธ Enum ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•จ

    // Direction ์ด๋ผ๋Š” ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์˜ Enum์„ ์ •์˜
    enum Direction {
      Up = "UP",
      Down = "DOWN",
      Left = "LEFT",
      Right = "RIGHT",
      }
    
      // Up, Down, Left, Right ๊ฐ๊ฐ์—๋Š” ๋ฌธ์ž์—ด ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ์žˆ๊ณ 
      // myDirection ๋ณ€์ˆ˜๋ฅผ Direction.Up ์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ์—
      let myDirection: Direction = Direction.Up;
    
      // ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋กœ๋Š” "UP"์ด ๋‚˜์˜ค๊ฒŒ ๋จ
      console.log(myDirection); // "UP"
    }
  • ๋ฌธ์žํ˜• Enum์—๋Š” ์ˆซ์žํ˜• Enum๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ auto-incrementing์ด ์—†์Œ.

  • ๋””๋ฒ„๊น… ์‹œ ์ˆซ์žํ˜• Enum์˜ ๊ฐ’์€ ๋ถˆ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜์˜ฌ ๋•Œ๊ฐ€ ์žˆ์ง€๋งŒ ๋ฌธ์žํ˜• Enum์€ ํ•ญ์ƒ ๋ช…ํ™•ํ•œ ๊ฐ’์ด ๋‚˜์™€ ์ฝ๊ธฐ ํŽธํ•จ.

  • ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์˜ Enum์€ ์ฃผ๋กœ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ’์„ TypeScript์—์„œ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋จ (e.g. HTTP ์š”์ฒญ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” Enum ์ •์˜ ๊ฐ€๋Šฅ)

    // HTTP ์š”์ฒญ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋‚ด๋Š” HttpMethod Enum์„ ์ •์˜
    enum HttpMethod {
      Get = "GET",
      Post = "POST",
      Put = "PUT",
      Delete = "DELETE",
    }
    
    // makeRequest ํ•จ์ˆ˜๋Š” URL๊ณผ HTTP ์š”์ฒญ ๋ฐฉ์‹์„ ์ธ์ž๋กœ ๋ฐ›์Œ
    function makeRequest(url: string, method: HttpMethod) {
      // ...
    }
    
    makeRequest("/api/data", HttpMethod.Post);
  • HTTP ์š”์ฒญ ๋ฐฉ์‹์„ ์ง€์ •ํ•  ๋•Œ๋Š” HttpMethod.Post์™€ ๊ฐ™์ด Enum ๊ฐ’์„ ์‚ฌ์šฉํ•จ.

  • ์ด๋ ‡๋“ฏ Enum ์‚ฌ์šฉ ์‹œ ์˜คํƒ€์™€ ๊ฐ™์€ ์‹ค์ˆ˜ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ.

4. ์—ญ ๋งคํ•‘ (Reverse mappings)

  • ์—ญ ๋งคํ•‘์€ ์ˆซ์žํ˜• Enum์—๋งŒ ์กด์žฌํ•˜๋ฉฐ, ๋ฌธ์žํ˜• Enum์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŠน์ง•์ž„.

  • ์—ด๊ฑฐํ˜•์˜ ํ‚ค(key)๋กœ ๊ฐ’(value)์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  & ๊ฐ’(value)์œผ๋กœ ํ‚ค(key)๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ์Œ.

      enum Enum {
          A
      }
    
      // Enum์˜ ํ‚ค๋กœ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ
      let a = Enum.A;
    
      // ๊ฐ’์œผ๋กœ๋„ Enum์˜ ํ‚ค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
      let nameOfA = Enum[a]; // "A"

Last updated