enum(์—ด๊ฑฐํ˜•)?

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์ˆซ์ž ๋˜๋Š” ๋ฌธ์ž์—ด ๊ฐ’์˜ ์ง‘ํ•ฉ์— ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋ฅผ ๋ฌธ์„œํ™”ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ๋œ ๊ฐ’์„ ํ•œ ๊ณณ์— ๋ชจ์•„๋‘๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ enum์€ ์ˆซ์žํ˜•์œผ๋กœ ์ •์˜๋œ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ฒซ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉฐ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค. ๋˜, ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์ˆซ์ž๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ทธ ๋‹ค์Œ ๊ฐ’๋“ค์€ ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ํ•œ๋‹ค.

enum Direction {
  Up,    // 0
  Down,  // 1
  Left,  // 2
  Right  // 3
}

console.log(Direction.Up);   // 0
console.log(Direction.Down); // 1

enum Direction {
  Up = 1,    
  Down,  // 2
  Left,  // 3
  Right  // 4
}

๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ๋ช…ํ™•ํ•œ ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

enum Status {
  Success = "SUCCESS",
  Failure = "FAILURE",
  Pending = "PENDING"
}

console.log(Status.Success); // "SUCCESS"

๐Ÿ”ฅย enum์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

1. ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ

์ฝ”๋“œ์—์„œ ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

2. ์ž๋™์™„์„ฑ ๋ฐ ํƒ€์ž… ์•ˆ์ •์„ฑ ์ œ๊ณต

์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜๊ณ , ํƒ€์ž… ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

enum Status {
  Success = "SUCCESS",
  Failure = "FAILURE",
  Pending = "PENDING"
}

function setStatus(status: Status) {
  console.log(`Status set to ${status}`);
}

setStatus(Status.Success); 
setStatus("Loading"); // โŒ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-03-10 แ„‹แ…ฉแ„’แ…ฎ 2.19.33.png

3. ๋Ÿฐํƒ€์ž„์—์„œ๋„ ๊ฐ’์ด ์œ ์ง€๋จ

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ type์ด๋‚˜ interface ๋Š” ์ปดํŒŒ์ผ ์‹œ ์‚ฌ๋ผ์ง€์ง€๋งŒ enum ์€ ๋Ÿฐํƒ€์ž„์—๋„ ๋‚จ์•„์žˆ๊ธฐ์— ๊ฐ’ ์ž์ฒด๋ฅผ ์ง์ ‘ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธย  enum์€ ๋Ÿฐํƒ€์ž„์—์„œ๋„ ์กด์žฌํ•œ๋‹ค!?

Enum์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํŠธ๋žœ์ŠคํŒŒ์ผํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

var Status;
(function (Status) {
	Status[Status["SUCCESS"] = "SUCCESS";
	Status[Status["FAILURE"] = "FAILURE";
	Status[Status["PENDING"] = "PENDING";
})(Status || (Status = {}));

console.log(Status.Success); // "SUCCESS"