Enum
Заримдаа хувьсагч зөвхөн тодорхой тооны утгуудаас нэгийг л авдаг. Жишээ нь, долоо хоногийн өдрүүд, улирал, захиалгын төлөв. Эдгээрийг enum ашиглан илэрхийлнэ.
Enum гэдэг нь enumeration буюу "тоолох" гэсэн үгнээс гаралтай. Холбоотой тогтмол утгуудын нэрлэсэн бүлэг юм.
Үндсэн Enum
Enum-г enum түлхүүр үгээр зарлана:
enum Өдөр {
Даваа,
Мягмар,
Лхагва,
Пүрэв,
Баасан,
Бямба,
Ням,
}
const өнөөдөр: Өдөр = Өдөр.Лхагва;
console.log(өнөөдөр); // 2
TypeScript enum-д автоматаар тоон утга өгдөг. Даваа = 0, Мягмар = 1, Лхагва = 2 гэх мэтчилэн.
Enum-г if нөхцөлд ашиглах нь кодыг ойлгомжтой болгодог:
if (өнөөдөр === Өдөр.Бямба || өнөөдөр === Өдөр.Ням) {
console.log("Амралтын өдөр!");
} else {
console.log("Ажлын өдөр.");
}
2 === 6 гэж бичихээс Өдөр.Лхагва === Өдөр.Бямба гэж бичих нь хамаагүй ойлгомжтой.
Тоон утга тогтоох
Enum-ийн эхний утгыг өөрчлөхөд дараах утгууд дагаж өөрчлөгдөнө:
enum Сар {
Нэгдүгээр = 1, // 0-оос биш 1-ээс эхэлнэ
Хоёрдугаар, // 2
Гуравдугаар, // 3
// ...
Арванхоёрдугаар = 12,
}
console.log(Сар.Нэгдүгээр); // 1
console.log(Сар.Гуравдугаар); // 3
Эсвэл бүх утгыг гараар тогтооч болно:
enum HttpТөлөв {
Амжилттай = 200,
Олдсонгүй = 404,
Серверийн алдаа = 500,
}
function хариуг шалгах(код: HttpТөлөв): void {
if (код === HttpТөлөв.Амжилттай) {
console.log("Хүсэлт амжилттай!");
} else if (код === HttpТөлөв.Олдсонгүй) {
console.log("Хуудас олдсонгүй.");
}
}
хариуг шалгах(HttpТөлөв.Амжилттай); // Хүсэлт амжилттай!
String Enum
Тоон утгын оронд мөр (string) ашиглах нь debug хийхэд илүү тохиромжтой:
enum Захиалгын Төлөв {
Хүлээгдэж байна = "PENDING",
Баталгаажсан = "CONFIRMED",
Хүргэгдсэн = "DELIVERED",
Цуцлагдсан = "CANCELLED",
}
const захиалга: Захиалгын Төлөв = Захиалгын Төлөв.Баталгаажсан;
console.log(захиалга); // "CONFIRMED"
Тоон enum 2 харуулахад ойлгомжгүй боловч string enum "CONFIRMED" гэж шууд харагдана. Ялангуяа API хариу дотор ашиглахад маш тохиромжтой.
Бодит жишээ: хэрэглэгчийн эрх
enum Эрх {
Зочин = "GUEST",
Суралцагч = "STUDENT",
Багш = "TEACHER",
Админ = "ADMIN",
}
function хичээл нэмэх(хэрэглэгчийн эрх: Эрх): void {
if (хэрэглэгчийн эрх === Эрх.Багш || хэрэглэгчийн эрх === Эрх.Админ) {
console.log("Хичээл нэмэх эрх байна.");
} else {
console.log("Хандах эрх хүрэлцэхгүй байна.");
}
}
хичээл нэмэх(Эрх.Суралцагч); // Хандах эрх хүрэлцэхгүй байна.
хичээл нэмэх(Эрх.Багш); // Хичээл нэмэх эрх байна.
Enum хэзээ ашиглах вэ?
Enum ашиглах нь тохиромжтой үеийг харцгааья:
| Тохиромжтой үе | Жишээ | | --------------------------------- | -------------------------------- | | Тогтмол тоотой сонголт | Улирал, өдрүүд, сар | | Төлөв хадгалах | Захиалга, хэрэглэгчийн эрх | | Тоон кодыг нэрлэх | HTTP статус код | | Ижил бүлгийн тогтмолуудыг нэгтгэх | Өнгөний тогтмолууд, тохиргоонууд |
Ганц нэг тогтмол утга байвал enum шаардлагагүй — зүгээр const ашиглана. Гэхдээ хоёр ба түүнээс дээш хамааралтай сонголт байвал enum хамгийн тохиромжтой сонголт.
Дараагийн хичээлд:
TypeScript-ийн хамгийн аюултай хоёр төрөл болох any ба unknown-г судална. Эдгээрийг хэзээ ашиглах, хэзээ зайлсхийх нь маш чухал мэдлэг юм.