Skip to main content

Command Palette

Search for a command to run...

๐Ÿง  Perbedaan never, undefined, null, unknown, dan any di TypeScript

Updated
โ€ข3 min read
๐Ÿง  Perbedaan never, undefined, null, unknown, dan any di TypeScript
A

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.

Dalam TypeScript, kita sering menemukan berbagai tipe data khusus yang sekilas mirip, tapi ternyata beda peran dan makna. Artikel ini akan membahas 5 di antaranya: never, undefined, null, unknown, dan any.


๐Ÿ“Œ 1. undefined: Tidak Diberi Nilai

Penjelasan:

undefined muncul saat sesuatu belum diberi nilai.

Contoh:

let x: number | undefined;

console.log(x); // undefined

Atau pada return function tanpa return:

function doSomething(): void {}
console.log(doSomething()); // undefined

Kapan pakai?

  • Saat properti atau variabel bisa belum diisi.

  • Saat opsional: function (x?: number) โ†’ x bisa undefined.


๐Ÿ“Œ 2. null: Nilai Kosong yang Disengaja

Penjelasan:

null artinya nilai kosong dengan sengaja, bukan lupa mengisi.

Contoh:

let user: string | null = null;

Perbandingan:

let a;           // undefined
let b = null;    // null

๐Ÿ“Œ 3. any: Bebas Merdeka (Berbahaya)

Penjelasan:

any artinya bebas isi apa saja. TypeScript menyerah, tidak mengecek tipe.

Contoh:

let data: any = "text";
data = 123;
data = true;

Bahaya:

data.toUpperCase(); // OK saat compile, tapi bisa error saat runtime!

โ— Hindari any kecuali kamu sangat yakin.


๐Ÿ“Œ 4. unknown: Bebas Tapi Harus Diperiksa Dulu

Penjelasan:

unknown mirip any, tapi tidak bisa langsung digunakan tanpa pemeriksaan tipe dulu.

Contoh:

let input: unknown = "hello";

// input.toUpperCase(); โŒ Error

if (typeof input === "string") {
  console.log(input.toUpperCase()); // โœ… Aman
}

โœ… Gunakan unknown saat menerima data eksternal (API, JSON.parse, dll).


๐Ÿ“Œ 5. never: Tidak Akan Pernah Terjadi

Penjelasan:

never artinya fungsi/tindakan tidak pernah menghasilkan nilai โ€” biasanya karena:

  1. Throw error

  2. Loop tak berujung

  3. Exhaustiveness checking

Contoh:

function crash(): never {
  throw new Error("Boom!");
}

Atau:

function infinite(): never {
  while (true) {}
}

Atau:

type Shape = "circle" | "square";
function draw(s: Shape) {
  if (s === "circle") return;
  if (s === "square") return;

  const neverValue: never = s; // ๐Ÿ‘ˆ Aman karena semua case tertangani
}

๐Ÿ” Ringkasan Tabel

TipeArtiContohCatatan Penggunaan
undefinedBelum diisi`let a: numberundefined`
nullKosong disengaja`let a: stringnull`
anyBebas tanpa kontrollet x: any = 42Hindari kecuali sangat terpaksa
unknownBebas, tapi harus diperiksalet x: unknown; if (typeof x === "string")Lebih aman daripada any
neverTidak mungkin terjadithrow new Error(), while(true)Untuk kasus ekstrem / exhaustiveness check

๐ŸŽ“ Tips Mengajar Santri:

  • Gunakan analogi:

    • undefined: seperti gelas kosong belum diisi.

    • null: gelas sengaja dikosongkan.

    • any: seperti membawa benda apapun ke kelas โ€” bisa berbahaya.

    • unknown: bawa benda aneh, tapi harus diperiksa dulu.

    • never: pintu keluar yang tidak pernah terbuka.

  • Tambahkan latihan deteksi tipe:

      function detect(val: any) {
        if (typeof val === "string") return "string";
        if (typeof val === "number") return "number";
        return "something else";
      }
    

More from this blog

F

Finlup ID | Sharing dunia teknologi dan coding

206 posts

Membedah Tren dan Teknologi yang Mengubah Dunia.