0Pricing
TypeScript Academy · Pelajaran

unknown vs any: Pilihan yang Lebih Aman

Pelajari alasan unknown memaksa Anda memeriksa tipe sebelum digunakan.

unknown vs any: Pilihan yang Lebih Aman adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 4 pelajaran total.

Selamat Datang

TypeScript 3.0 memperkenalkan tipe `unknown` sebagai alternatif yang aman secara tipe untuk `any`. Dalam pelajaran ini, Anda akan mempelajari apa yang membuat `unknown` lebih aman dan kapan menggunakannya.

Masalah dengan any

Dengan `any`, TypeScript menonaktifkan semua pemeriksaan. Anda dapat memanggil metode, mengakses properti, dan menetapkan nilai ke variabel bertipe tanpa batasan—dan tanpa keamanan.
let val: any = getData();
val.someMethod(); // TypeScript: OK. Runtime: possible crash

Memperkenalkan unknown

`unknown` adalah tipe teratas yang aman secara tipe. Seperti `any`, tipe ini dapat menyimpan nilai apa pun. Berbeda dengan `any`, Anda tidak dapat menggunakannya sebelum mempersempit tipenya.
let val: unknown = getData();
// val.someMethod(); // Error: Object is of type 'unknown'

Mempersempit unknown Sebelum Digunakan

Untuk menggunakan nilai `unknown`, Anda harus mempersempitnya dengan pemeriksaan tipe. Setelah itu, TypeScript mengizinkan operasi pada tipe yang telah dipersempit.
let input: unknown = getInput();
if (typeof input === 'string') {
  console.log(input.toUpperCase()); // OK — narrowed to string
}

unknown Tidak Dapat Ditetapkan ke Tipe Tertentu

Anda tidak dapat menetapkan `unknown` ke tipe tertentu tanpa pemeriksaan atau pernyataan tipe. Hal ini memaksa Anda memvalidasi nilai sebelum menggunakannya.
let x: unknown = 'hello';
// let s: string = x; // Error
let s: string = x as string; // OK with assertion

Menggunakan unknown dalam Blok Penangkapan Kesalahan

Dalam TypeScript 4.0+, kesalahan yang ditangkap secara bawaan bertipe `unknown`. Ini lebih aman daripada bawaan `any` sebelumnya karena memaksa Anda memeriksa tipe kesalahan tersebut.
try {
  doSomething();
} catch (err: unknown) {
  if (err instanceof Error) {
    console.log(err.message); // safe
  }
}

unknown untuk Data Eksternal

Saat mengurai JSON atau menerima data dari API, beri tipe `unknown` terlebih dahulu lalu validasi sebelum menggunakannya.
const raw: unknown = JSON.parse(text);
if (
  typeof raw === 'object' &&
  raw !== null &&
  'name' in raw
) {
  console.log((raw as any).name);
}

Penjaga Tipe dengan unknown

Penjaga tipe yang ditentukan pengguna dapat bekerja dengan sempurna bersama `unknown`, sehingga Anda dapat memvalidasi struktur yang kompleks sebelum menggunakannya.
function isUser(val: unknown): val is { name: string } {
  return typeof val === 'object' && val !== null && 'name' in val;
}

unknown vs never

`unknown` adalah tipe teratas—setiap tipe dapat ditetapkan kepadanya. `never` adalah tipe terbawah—tidak ada tipe yang dapat ditetapkan kepadanya. Keduanya merupakan kebalikan.
// unknown: anything can be assigned to it
let a: unknown = 42; // OK

// never: nothing can be assigned to it
function fail(): never { throw new Error(); }

Memilih antara any dan unknown

Gunakan `unknown` ketika Anda menerima data dengan tipe yang belum diketahui (JSON, input pengguna, API eksternal). Gunakan `any` hanya sebagai pilihan terakhir saat migrasi atau ketika menggunakan pustaka tanpa tipe.

Pustaka Validasi saat Program Berjalan

Pustaka seperti Zod, Valibot, dan io-ts sangat cocok dipasangkan dengan `unknown`. Pustaka tersebut mengurai dan memvalidasi data, lalu mengembalikan nilai bertipe dari input `unknown`.
import { z } from 'zod';
const UserSchema = z.object({ name: z.string(), age: z.number() });
const user = UserSchema.parse(unknownData); // throws if invalid

Pemeriksaan Singkat

Apa yang harus Anda lakukan sebelum dapat menggunakan nilai `unknown` dalam TypeScript?

Rangkuman

`unknown` adalah alternatif yang aman untuk `any`. Tipe ini menerima nilai apa pun, tetapi memaksa Anda mempersempit tipe sebelum menggunakannya. Gunakan untuk data eksternal, blok penangkapan kesalahan, dan situasi apa pun ketika tipe benar-benar belum diketahui.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “unknown vs any: Pilihan yang Lebih Aman” gratis?

Ya — teks lengkap “unknown vs any: Pilihan yang Lebih Aman” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “unknown vs any: Pilihan yang Lebih Aman”?

Pelajari alasan unknown memaksa Anda memeriksa tipe sebelum digunakan. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai TypeScript Academy?

Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “unknown vs any: Pilihan yang Lebih Aman” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Tipe Primitif: string, number, boolean
  2. Tipe any dan Alasan Menghindarinya
  3. unknown vs any: Pilihan yang Lebih Aman
  4. null, undefined, dan Pemeriksaan Null Ketat
← Kembali ke TypeScript Academy