Enum
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah halaman ini, kamu dapat menjelaskan kegunaan enum, membuat enum sederhana, dan menggunakannya sebagai nilai properti objek.
Pendahuluan
Section titled “Pendahuluan”enum (kependekan dari enumeration) adalah fitur khusus TypeScript yang tidak ada di JavaScript murni. enum memungkinkan kita mendefinisikan sekumpulan konstanta bernama yang saling berhubungan sehingga membuat kode lebih ramah dibaca dan lebih terstruktur.
Penjelasan Materi
Section titled “Penjelasan Materi”enum mengelompokkan nilai-nilai konstan ke dalam satu nama wadah. Secara bawaan, enum di TypeScript bernilai angka mulai dari 0, tetapi kita juga bisa memberikan nilai string eksplisit.
Sintaks dasar:
enum Arah { Utara = "UTARA", Selatan = "SELATAN"}Analogi Kehidupan Sehari-hari
Section titled “Analogi Kehidupan Sehari-hari”Menu Pilihan Tetap di Kantin
Section titled “Menu Pilihan Tetap di Kantin”Bayangkan papan daftar Kategori Makanan yang digantung di kantin sekolah:
KATEGORI KANTIN ├── MakananBerat (misal: Nasi Goreng) ├── Minuman (misal: Es Teh) └── Cemilan (misal: Gorengan)Setiap kali siswa memesan, mereka harus menyebutkan kategori tersebut agar kasir menekan tombol yang tepat pada mesin kasir. Pilihan tombol kasir sudah terkunci pada 3 kategori itu saja.
Visual Illustration
Section titled “Visual Illustration”enum Peran { Siswa = "SISWA", Guru = "GURU"}
Peran.Siswa ──► menghasilkan nilai "SISWA"Mari Mencoba
Section titled “Mari Mencoba”Buat src/bab7/enum.ts:
// 1. Mendefinisikan Enum Stringenum Jurusan { RPL = "Rekayasa Perangkat Lunak", TKJ = "Teknik Komputer dan Jaringan", DKV = "Desain Komunikasi Visual"}
type Siswa = { nama: string; jurusan: Jurusan; // menggunakan Enum sebagai tipe}
// 2. Menggunakan Enum saat membuat objekconst siswaA: Siswa = { nama: "Putra", jurusan: Jurusan.RPL // mengisi menggunakan objek Enum}
console.log("Profil Siswa:", siswaA)console.log(`Nama Jurusan: ${siswaA.jurusan}`)Jalankan:
tsx src/bab7/enum.tsOutput
Section titled “Output”Profil Siswa: { nama: 'Putra', jurusan: 'Rekayasa Perangkat Lunak' }Nama Jurusan: Rekayasa Perangkat LunakPenjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”enum Jurusan { ... }— membuat enum bernamaJurusan. KunciRPLmemiliki nilai asli"Rekayasa Perangkat Lunak".Jurusan.RPL— cara kita mengakses nilai dari enum tersebut. Nilai ini sangat aman karena kita tidak menuliskan string manual secara langsung yang rawan typo.
Enum Angka (Numeric Enum)
Section titled “Enum Angka (Numeric Enum)”Jika tidak diberi nilai, enum otomatis bernilai angka urut mulai dari 0:
enum Hari { Senin, // 0 Selasa, // 1 Rabu // 2}
console.log(Hari.Senin) // Output: 0Latihan
Section titled “Latihan”- Buat enum
StatusTugasdengan nilai:Belum= “BELUM”,Proses= “PROSES”,Selesai= “SELESAI”. - Buat objek
tugas(nama, status) yang statusnya mengambil nilai dari enum tersebut, lalu tampilkan.
Ringkasan
Section titled “Ringkasan”enummengelompokkan nilai konstan bernama dalam satu wadah.- Bernilai angka (mulai dari 0) secara bawaan, atau bisa diisi string.
- Diakses menggunakan sintaks
NamaEnum.NamaKunci. - Membantu menghindari hardcoded string yang rawan salah ketik.