enum์ ๋ฌด์์ธ๊ณ ?๐ค
๐ก
enum
: ์ฌ๋ฌ ๊ด๋ จ๋ ์์ ๊ฐ๋ค์ ํ ๊ณณ์ ๋ชจ์์ ์ ๋ฆฌํ ์ ์๋๋ก ํ๋ ํ์
JavaScript์์๋ enum type์ด ์กด์ฌํ์ง ์์ผ๋ฏ๋ก, TypeScript์์ ์ ์ฒด์ ์ผ๋ก ์ ๊ณตํ๋ ํ์ ์ค ํ๋.
โ๏ธ enum ์์ 1
JavaScript์์, ๋ณดํต ์์(๋ณํ์ง ์๋ ์, constant)๋ฅผ ์ ์ธํ ๋์๋ ๋ณ์๋ช ์ ๋๋ฌธ์๋ก ์ ์ธํ์ง๋ง, TypeScript์์
enum
์ ์ธํ ๋์๋ ์ฒซ ๊ธ์๋ง ๋๋ฌธ์๋ก ์ ์ธํ๋ค.
// JavaScript
const MAX_NUM = 6;
const MAX_STUDENTS_PER_CLASS = 10;
const MONDAY = 0;
const TUESDAY = 1;
const WEDNESDAY = 2;
// JavaScript์์๋ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ ์ ์๋ ํ์
์ด ๋ณ๋ ์กด์ฌํ์ง ์์ผ๋ฏ๋ก, ์๋์ฒ๋ผ Object๋ก ๊ตฌํ.
const DAYS_ENUM = Object.freeze({ MONDAY: 0, TUESDAY: 1, WEDNESDAY: 2 });
const dayOfToday = DAYS_ENUM.MONDAY;
// TypeScript
enum Days {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
}
console.log(Days.Monday);
let day: Days = Days.Saturday;
day = Days.Tuesday;
ํ์
์คํฌ๋ฆฝํธ์์ enum
์ ์ฌ์ฉํ๋ฉด
- ์ ํํ ๊ฐ์ด ์ซ์ 0๋ถํฐ ์ฆ๊ฐํ๋ฉด์ ๊ฐ์ ๊ฐ์ง๊ฒ ๋๊ณ
- ์์)
console.log(Days.Monday);
๋ 0์ด ์ถ๋ ฅ๋จ
- ์์)
- 0์ด ์๋ 1๋ถํฐ ์์ํ๊ณ ์ถ๋ค๋ฉด ์ง์ ํ๋ฉด ๋๋ค
- ์์)
console.log(Days.Monday);
๋ 1์ด ์ถ๋ ฅ๋จ
- ์์)
- ์ซ์๊ฐ ์๋ ๋ฌธ์์ด๋ ์ง์ ์ด ๊ฐ๋ฅํ๋ค.
- ์์)
console.log(Days.Monday);
๋ monday์ด๊ฐ ์ถ๋ ฅ๋จ
- ์์)
๐ฑ ํ์ ์คํฌ๋ฆฝํธ์์ enum์ ์ฌ์ฉํ์ง ์๋ ์ด์ !!!!!!
enum Days {
Monday,
Tuesday,
Wednesday,
}
let day: Days = Days.Monday;
day = 10; // enum type์ด ์ง์ ๋ ๋ณ์์ ๋ค๋ฅธ ์ซ์๋ฅผ ํ ๋นํด๋ ์๋ฌ๊ฐ ๋์ง ์๋๋ค ๐ฑ
โจ tl;dr
๐ ํ์
์คํฌ๋ฆฝํธ์์ enum
ํ์
์ ์ฌ์ฉํ์ง ์๋๋ค. ์ด์ ๋,
- enum์ผ๋ก ํ์ ์ด ์ง์ ๋ ๋ณ์์ ๋ค๋ฅธ ์ซ์๋ฅผ ํ ๋นํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฐ๊ด๋์ง ์๋ ์ซ์๋ ํ ๋นํ ์ ์๋ค.
๋ฐ๋ผ์ ํ์ ์คํฌ๋ฆฝํธ์์๋ enum ๋์ union ํ์ ์ ์ฌ์ฉํ๋ค.