- 1. Enum di TypeScript
- Enum dengan Nilai yang Ditentukan
- Enum dengan String Values
- 2. Tuple di TypeScript
- Tuple Sederhana
- Tuple dengan Label yang Lebih Jelas
- Tuple dengan Optional Element
- Tuple dengan Rest Parameter (...)
- Kesimpulan
Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar tentang Literal Type di dalam TypeScript dan pada artikel ini, kita akan membahas cara kerja Enum dan Tuple serta bagaimana menggunakannya dalam project TypeScript.
Dalam TypeScript, Enum dan Tuple adalah dua fitur yang membantu dalam pengelolaan data dengan cara yang lebih terstruktur dan aman.
Enumdigunakan untuk mendefinisikan sekumpulan nilai tetap (constant) yang lebih mudah dibaca.Tupledigunakan untuk membuat array dengan panjang dan tipe elemen yang sudah ditentukan.
1. Enum di TypeScript
Enum digunakan untuk mendefinisikan sekumpulan nilai tetap yang memiliki arti lebih jelas dibandingkan angka atau string biasa.
-
Enum dengan Nilai Default (Numeric Enum)
Secara default, Enum di TypeScript menggunakan angka sebagai nilai awalnya, dimulai dari
0.enum Role { Admin, // 0 User, // 1 Guest // 2 } let userRole: Role = Role.Admin; console.log(userRole); // Output: 0-
Role.Adminotomatis memiliki nilai0,Role.Useradalah1, dan seterusnya. -
Jika kita memanggil
console.log(Role.User), hasilnya adalah1.
-
-
Enum dengan Nilai yang Ditentukan
Kita juga bisa menentukan nilai untuk setiap enum secara manual.
enum Status { Success = 200, NotFound = 404, ServerError = 500 } console.log(Status.Success); // Output: 200 console.log(Status["NotFound"]); // Output: 404Successmemiliki nilai200,NotFoundadalah404, danServerErroradalah500. -
Enum dengan String Values
Selain angka, kita juga bisa menggunakan string dalam Enum agar lebih mudah dibaca.
enum PaymentStatus { Pending = "PENDING", Success = "SUCCESS", Failed = "FAILED" } let statusTransaksi: PaymentStatus = PaymentStatus.Success; console.log(statusTransaksi); // Output: SUCCESSString Enum lebih baik digunakan jika kita ingin hasil output yang lebih mudah dibaca.
2. Tuple di TypeScript
Tuple memungkinkan kita menyimpan beberapa nilai dalam satu array dengan tipe data yang telah ditentukan untuk setiap elemennya.
-
Tuple Sederhana
let user: [string, number]; user = ["Fika", 25]; // ✅ Valid // user = [25, "Fika"]; // ❌ Error: Tipe tidak sesuai console.log(user[0]); // Output: Fika console.log(user[1]); // Output: 25-
Elemen pertama harus
string, dan elemen kedua harusnumber. -
Jika urutan atau tipe data tidak sesuai, TypeScript akan memberikan error.
-
-
Tuple dengan Label yang Lebih Jelas
Untuk meningkatkan keterbacaan, kita bisa menambahkan destructuring.
let person: [string, number] = ["Fika", 30]; let [nama, umur] = person; console.log(nama); // Output: Fika console.log(umur); // Output: 30Kita bisa langsung mendestruktur tuple ke dalam variabel
namadanumur. -
Tuple dengan Optional Element
let mahasiswa: [string, number, string?]; mahasiswa = ["Budi", 21]; // ✅ Valid mahasiswa = ["Budi", 21, "Teknik Informatika"]; // ✅ Valid // mahasiswa = [21, "Budi"]; // ❌ ErrorElemen ketiga bersifat opsional, jadi bisa diisi atau tidak.
-
Tuple dengan Rest Parameter (
...)Kita bisa menggunakan rest parameter untuk membuat tuple yang lebih fleksibel.
let colors: [number, ...string[]]; colors = [1, "red", "green", "blue"]; console.log(colors); // Output: [ 1, 'red', 'green', 'blue' ]Elemen pertama harus number, tetapi setelahnya bisa berisi banyak string.
Kesimpulan
Pada artikel kali ini, kita telah mempelajari:
Enumuntuk mendefinisikan sekumpulan nilai tetap yang lebih mudah dipahami.Tupleuntuk menyimpan beberapa nilai dengan tipe yang sudah ditentukan.- Menggunakan rest parameter dalam tuple untuk fleksibilitas yang ebih tinggi.
Pada artikel berikutnya, kita semua akan belajar tentang Class dan Object-Oriented Programming (OOP) di dalam TypeScript.
Terima Kasih
Artikel ini dibaca sebanyak 2.420 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...