TypeScript - Enums: Panduan untuk Pemula

Hai, para pemrogram masa depan! Hari ini, kita akan masuk ke dunia yang menakjubkan dari TypeScript Enums. Jangan khawatir jika Anda belum pernah mengoding sebelumnya – saya akan menjadi panduan Anda yang ramah dalam perjalanan ini, seperti yang telah saya lakukan untuk ribuan siswa selama tahun-tahun mengajar saya. Jadi, mari kita mulai!

TypeScript - Enums

Apa Itu Enums?

Sebelum kita melompat ke jenis-jenis Enums yang berbeda, mari kita mengerti apa itu Enums. Bayangkan Anda sedang mengatur lemari pakaian Anda. Anda mungkin memiliki kategori-kategori yang berbeda untuk pakaian Anda: kaos, celana, sepatu, dll. Enums di TypeScript seperti kategori-kategori ini – mereka membantu kita mengelompokkan nilai-nilai yang terkait bersama-sama dan memberikan mereka nama yang bermakna.

Enums Numerik

Enums Numerik adalah jenis Enums yang paling umum di TypeScript. Mereka seperti memberikan nomor ke superhero favorit Anda.

enum Superheroes {
Superman,
Batman,
WonderWoman,
Flash
}

console.log(Superheroes.Superman);  // Output: 0
console.log(Superheroes.Batman);    // Output: 1
console.log(Superheroes.WonderWoman);  // Output: 2
console.log(Superheroes.Flash);     // Output: 3

Dalam contoh ini, TypeScript secara otomatis memberikan nomor mulai dari 0. Superman mendapat 0, Batman mendapat 1, dan seterusnya. Itu seperti mereka berbaris untuk foto kelompok, dan kita memberikan mereka nomor berdasarkan posisi mereka!

Tapi apa bila kita ingin memulai dengan nomor yang berbeda? Tidak masalah! Kita juga bisa melakukan itu:

enum Villains {
Joker = 1,
LexLuthor,
Cheetah,
ReverseFlash
}

console.log(Villains.Joker);        // Output: 1
console.log(Villains.LexLuthor);    // Output: 2
console.log(Villains.Cheetah);      // Output: 3
console.log(Villains.ReverseFlash); // Output: 4

Di sini, kita mengatakan kepada TypeScript untuk mulai menghitung dari 1 untuk Joker, dan secara otomatis melanjutkan untuk sisanya.

Enums String

Sekarang, katakanlah Anda tidak suka nomor dan lebih memilih kata. Itu di mana Enums String berguna. Mereka seperti memberikan nama panggilan kepada hewan peliharaan Anda!

enum PetNames {
Dog = "BUDDY",
Cat = "WHISKERS",
Fish = "BUBBLES",
Bird = "TWEETY"
}

console.log(PetNames.Dog);   // Output: "BUDDY"
console.log(PetNames.Cat);   // Output: "WHISKERS"
console.log(PetNames.Fish);  // Output: "BUBBLES"
console.log(PetNames.Bird);  // Output: "TWEETY"

Dengan Enums String, kita harus memberikan nilai ke setiap anggota. Itu seperti memastikan setiap hewan peliharaan Anda mengetahui nama panggilannya yang khusus!

Enums Heterogen

kadang-kadang, kehidupan tidak hanya tentang nomor atau hanya tentang string – itu adalah campuran! Enums Heterogen seperti kotak cokelat berbagai macam – Anda mendapat sedikit dari segala sesuatu.

enum MixedBag {
Number = 1,
String = "STRING",
AnotherNumber = 2
}

console.log(MixedBag.Number);        // Output: 1
console.log(MixedBag.String);        // Output: "STRING"
console.log(MixedBag.AnotherNumber); // Output: 2

Meskipun ini dimungkinkan, biasanya disarankan untuk tetap menggunakan baik semua nomor atau semua string dalam Enum untuk konsistensi.

Enums di Waktu Eksekusi

Salah satu hal menakjubkan tentang Enums adalah mereka ada di waktu eksekusi. Ini berarti Anda bisa menggunakan mereka di kode Anda seperti objek lainnya!

enum Fruits {
Apple,
Banana,
Orange
}

function getFruitName(fruit: Fruits): string {
return Fruits[fruit];
}

console.log(getFruitName(Fruits.Apple));  // Output: "Apple"
console.log(getFruitName(Fruits.Banana)); // Output: "Banana"

Di sini, kita menggunakan Enum seperti objek biasa. Itu seperti memiliki kamus magis yang dapat mentranslate nomor ke nama buah!

Enums di Waktu Kompilasi

Enums juga menonjol di waktu kompilasi. Mereka membantu TypeScript menangkap kesalahan sebelum kode Anda bahkan dijalankan!

enum DaysOfWeek {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}

let day: DaysOfWeek = DaysOfWeek.Monday;
day = DaysOfWeek.Friday;  // Ini baik

// day = "Monday";  // Kesalahan: Tipe '"Monday"' tidak dapat diassign ke tipe 'DaysOfWeek'.

TypeScript akan memberikan Anda kesalahan jika Anda mencoba menset nilai yang bukan bagian dari Enum. Itu seperti memiliki penjaga keras di klub yang hanya membolehkan hari-hari minggu masuk!

Enums Ambien

Enums Ambien sedikit istimewa. Mereka digunakan saat Anda memberitahu TypeScript tentang Enums yang ada di tempat lain dalam kode Anda atau dalam pustaka yang Anda gunakan.

declare enum ExternalEnum {
A = 1,
B,
C = 2
}

Kata kunci declare seperti mengatakan, "Hey TypeScript, percayalah, Enum ini ada di tempat lain dalam kode." Itu berguna saat Anda bekerja dengan kode yang tidak ditulis dalam TypeScript.

Objek vs. Enums

Anda mungkin bertanya-tanya, "Mengapa tidak hanya menggunakan objek?" Well, Enums memiliki beberapa keunggulan:

// Menggunakan objek
const ColorObject = {
Red: 'RED',
Green: 'GREEN',
Blue: 'BLUE'
} as const;

// Menggunakan Enum
enum ColorEnum {
Red = 'RED',
Green = 'GREEN',
Blue = 'BLUE'
}

// Dengan objek, Anda perlu menggunakan penegasan tipe
let objColor: keyof typeof ColorObject = 'Red';

// Dengan Enums, itu lebih mudah
let enumColor: ColorEnum = ColorEnum.Red;

Enums menyediakan keamanan tipe yang lebih baik dan lebih ringkas dalam banyak kasus.

Menggunakan Enum sebagai Parameter Fungsi

Enums sangat cocok untuk parameter fungsi. Mereka membuat kode Anda lebih mudah dibaca dan mencegah kesalahan:

enum Sizes {
Small,
Medium,
Large
}

function orderCoffee(size: Sizes): string {
switch(size) {
case Sizes.Small:
return "Here's your small coffee!";
case Sizes.Medium:
return "One medium coffee coming right up!";
case Sizes.Large:
return "Large coffee, extra caffeine!";
default:
return "We don't have that size!";
}
}

console.log(orderCoffee(Sizes.Medium));  // Output: "One medium coffee coming right up!"
// console.log(orderCoffee("Venti"));    // Kesalahan: Argumen tipe '"Venti"' tidak dapat diassign ke parameter tipe 'Sizes'.

Dengan menggunakan Enum untuk parameter ukuran, kita memastikan bahwa hanya ukuran yang valid yang dapat diberikan ke fungsi. Itu seperti memiliki menu dengan opsi tetap – tanpa kebingungan tentang ukuran mana yang tersedia!

Metode Enums

Berikut adalah tabel metode yang berguna untuk bekerja dengan Enums:

Metode Deskripsi Contoh
Object.keys() Dapatkan semua kunci Enum Object.keys(Sizes)
Object.values() Dapatkan semua nilai Enum Object.values(Sizes)
Object.entries() Dapatkan pasangan key-value Enum Object.entries(Sizes)
Enum[key] Dapatkan nilai untuk kunci Sizes[Sizes.Small]
Enum[value] Dapatkan kunci untuk nilai (untuk Enums numerik) Sizes[0]

Metode-metode ini membantu Anda bekerja dengan Enums dalam berbagai cara, seperti mendapatkan semua ukuran yang tersedia atau menemukan nama ukuran dari nilaiannya.

Dan itu saja! Anda baru saja mengambil langkah pertama ke dunia TypeScript Enums. Ingat, programming adalah seperti belajar bahasa baru – itu memerlukan latihan, tapi segera Anda akan menjadi mahir dalam Enum-speak! Terus mengoding, tetap bersemangat, dan jangan lupa untuk bersenang-senang dalam perjalanan. Siapa tahu, mungkin Anda akan membuat Enum untuk rasa es krim favorit Anda berikutnya!

Credits: Image by storyset