Tipe Data: never
Tujuan Pembelajaran
Section titled “Tujuan Pembelajaran”Setelah membaca halaman ini, kamu akan mampu:
- Menjelaskan makna tipe
never - Membedakan
neverdanvoid - Mengenali fungsi yang menghasilkan
never - Memahami kapan tipe ini berguna
Pendahuluan
Section titled “Pendahuluan”Tipe never terdengar aneh pada awalnya. Bagaimana mungkin sebuah tipe berarti “tidak pernah”?
never dipakai saat TypeScript tahu bahwa sebuah fungsi tidak akan pernah selesai secara normal dan tidak akan menghasilkan nilai. Contoh paling umum: fungsi yang selalu melempar error, atau perulangan tanpa akhir.
Analogi: Jalan yang Tidak Pernah Sampai Tujuan
Section titled “Analogi: Jalan yang Tidak Pernah Sampai Tujuan”Bayangkan kamu berjalan di jalan melingkar tanpa pintu keluar. Kamu terus berjalan dan tidak pernah sampai di tujuan akhir.
Mulai → jalan → jalan → jalan → jalan → ... tidak pernah selesaiFungsi bertipe never seperti jalan itu. Program masuk ke fungsi, tetapi fungsi tidak pernah mengembalikan hasil normal.
Penjelasan Materi
Section titled “Penjelasan Materi”Contoh fungsi yang selalu melempar error:
function hentikanProgram(pesan: string): never { throw new Error(pesan)}Fungsi tersebut selalu berhenti dengan error. Karena tidak ada return yang normal, tipe hasilnya adalah never.
Contoh perulangan tak berakhir:
function jalankanSelamanya(): never { while (true) { console.log("Program masih berjalan") }}Fungsi ini juga tidak pernah selesai, sehingga never tepat digunakan.
never vs void
Section titled “never vs void”Keduanya sama-sama tidak menghasilkan nilai yang bisa disimpan, tetapi maknanya berbeda:
| Tipe | Arti |
|---|---|
void |
Fungsi selesai normal, tetapi tidak mengembalikan nilai |
never |
Fungsi tidak pernah selesai normal |
function tampilkanPesan(): void { console.log("Halo") // Fungsi selesai di sini}
function buatError(): never { throw new Error("Terjadi masalah") // Fungsi tidak pernah sampai ke akhir normal}Mari Mencoba
Section titled “Mari Mencoba”Buat file src/bab1/never.ts:
function tampilkanPeringatan(pesan: string): void { console.log(`PERINGATAN: ${pesan}`)}
function hentikanDenganError(pesan: string): never { throw new Error(pesan)}
tampilkanPeringatan("Simpan pekerjaanmu sebelum menutup VS Code")console.log("Program masih berjalan setelah fungsi void")
try { hentikanDenganError("Data siswa tidak ditemukan")} catch (error) { console.log("Error berhasil ditangani")}
console.log("Program selesai")Jalankan:
tsx src/bab1/never.tsOutput:
PERINGATAN: Simpan pekerjaanmu sebelum menutup VS CodeProgram masih berjalan setelah fungsi voidError berhasil ditanganiProgram selesaiPenjelasan Baris per Baris
Section titled “Penjelasan Baris per Baris”function hentikanDenganError(pesan: string): never {pesan: string— fungsi menerima teks error: never— fungsi tidak akan selesai secara normal
throw new Error(pesan)throw— melempar errornew Error(pesan)— membuat objek error dengan pesan yang diberikan- Setelah
throw, alur normal fungsi berhenti
try { hentikanDenganError("Data siswa tidak ditemukan")} catch (error) { console.log("Error berhasil ditangani")}try...catch dipakai untuk menangkap error agar program tidak berhenti total. Kamu akan belajar penanganan error lebih dalam di bab lanjutan.
Kapan never Dipakai?
Section titled “Kapan never Dipakai?”Dalam latihan awal, kamu jarang perlu menulis never sendiri. Tipe ini lebih berguna ketika:
- Membuat fungsi helper yang selalu melempar error
- Memastikan semua kondisi sudah ditangani
- Menulis library atau aplikasi besar
- Membuat perulangan yang memang sengaja tidak berhenti
TypeScript kadang menyimpulkan never secara otomatis, sehingga kamu tidak selalu perlu menuliskannya.
Kesalahan Umum
Section titled “Kesalahan Umum”❌ Menggunakan never untuk fungsi biasa
Section titled “❌ Menggunakan never untuk fungsi biasa”function sapa(): never { console.log("Halo")}// Error! Function with declared return type 'never' cannot have a reachable end point.Fungsi sapa() selesai normal. Maka tipe yang tepat adalah void.
function sapa(): void { console.log("Halo")}❌ Menjalankan loop tak berakhir tanpa tahu cara berhenti
Section titled “❌ Menjalankan loop tak berakhir tanpa tahu cara berhenti”while (true) { console.log("Berjalan")}Jika terlanjur dijalankan di terminal, tekan Ctrl + C untuk menghentikannya.
Latihan
Section titled “Latihan”Buat file src/bab1/latihan-never.ts:
- Buat fungsi
laporkanErroryang menerima pesan string - Beri tipe return
never - Gunakan
throw new Error(pesan)di dalamnya - Panggil fungsi di dalam
try...catch - Tampilkan pesan setelah
catchuntuk membuktikan error tertangani
Ringkasan
Section titled “Ringkasan”neverberarti fungsi tidak pernah selesai secara normal- Umum dipakai pada fungsi yang selalu
throwerror atau loop tanpa akhir voidselesai normal tanpa mengembalikan nilai;nevertidak selesai normal- Jangan gunakan
neveruntuk fungsi biasa - Jika loop tak berakhir terlanjur jalan, hentikan dengan
Ctrl + C