0Pricing
TypeScript Academy · Pelajaran

Tipe any dan Alasan Menghindarinya

Pahami any dan kapan tipe ini menggagalkan tujuan TypeScript.

Tipe any dan Alasan Menghindarinya adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 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

Tipe `any` adalah jalan keluar TypeScript—tipe ini menonaktifkan semua pemeriksaan tipe untuk sebuah variabel. Dalam pelajaran ini, Anda akan memahami kapan tipe ini muncul dan mengapa penggunaannya perlu diminimalkan.

Fungsi any

Variabel bertipe `any` dapat menyimpan nilai apa pun dan mendukung operasi apa pun. TypeScript sepenuhnya berhenti memeriksanya.
let x: any = 5;
x = 'hello';       // OK
x = true;          // OK
x.nonExistent();   // No error — but crashes at runtime!

Cara any Menyebar

Menetapkan variabel `any` ke variabel yang memiliki tipe akan membuat variabel tersebut ikut terpengaruh. `any` menyebar secara diam-diam ke seluruh basis kode Anda.
let data: any = fetchData();
let name: string = data.name; // name is now effectively any

Kapan TypeScript Menyimpulkan any

Jika Anda mendeklarasikan variabel tanpa nilai awal dan tanpa anotasi tipe, TypeScript menyimpulkan `any`. Aktifkan `noImplicitAny` agar hal ini menjadi kesalahan kompilasi.
let value; // inferred as any — dangerous!
value = 42;
value = 'hello';

// Fix:
let value2: number;

Bendera noImplicitAny

Opsi kompilator `noImplicitAny` (yang diaktifkan oleh `strict`) memaksa Anda memberikan anotasi tipe, bukan secara bawaan kembali menggunakan `any`.
// tsconfig.json
{ "compilerOptions": { "noImplicitAny": true } }

// Now this is an error:
function process(data) { } // Error: Parameter has implicit any type

Penggunaan any yang Sah

Terkadang `any` tidak dapat dihindari: saat memigrasikan JavaScript, menangani pustaka pihak ketiga tanpa tipe, atau bekerja dengan data yang benar-benar dinamis. Gunakan secara hemat dan hanya di lokasi yang diperlukan.
// Acceptable: narrow scope, clearly documented
function parseJson(raw: string): any {
  return JSON.parse(raw); // validate with Zod afterwards
}

Pernyataan Tipe sebagai Alternatif

Alih-alih menggunakan `any`, gunakan pernyataan tipe (as Type) ketika Anda mengetahui lebih banyak daripada kompilator. Cara ini lebih aman karena Anda berkomitmen pada tipe tertentu.
const raw = JSON.parse(text) as { name: string; age: number };
console.log(raw.name); // typed correctly

any vs object

Tipe `object` menerima nilai non-primitif apa pun, tetapi tidak mengizinkan akses properti sembarangan seperti `any`. Tipe ini memberikan sedikit lapisan keamanan.
let o: object = { x: 1 };
// o.x; // Error — object doesn't allow property access

let a: any = { x: 1 };
a.x; // OK — but no safety

any Menonaktifkan Pelengkapan Otomatis

Selain mengurangi keamanan, penggunaan `any` membungkam pelengkapan otomatis dan navigasi di IDE. Anda kehilangan semua manfaat alat bantu yang disediakan TypeScript.

Mengganti any dengan unknown

Untuk data eksternal yang tidak Anda kendalikan, pilih `unknown`. Tipe ini memaksa Anda mempersempit tipe sebelum menggunakannya, berbeda dengan `any` yang mengizinkan operasi apa pun.
let input: unknown = getInput();
// input.toUpperCase(); // Error — must narrow first
if (typeof input === 'string') {
  console.log(input.toUpperCase()); // OK
}

Anggaran any

Anggap `any` sebagai utang. Setiap penggunaannya membuat basis kode Anda kurang aman. Usahakan tidak memiliki tipe `any` dalam kode produksi. Gunakan aturan @typescript-eslint/no-explicit-any dari ESLint.

Pemeriksaan Singkat

Opsi kompilator mana yang membuat TypeScript melaporkan kesalahan ketika sebuah variabel memiliki tipe `any` implisit?

Rangkuman

Tipe `any` menonaktifkan pemeriksaan tipe TypeScript dan menyebar ke seluruh kode. Aktifkan noImplicitAny, ganti `any` dengan `unknown` untuk data eksternal, dan gunakan pernyataan tipe untuk kasus tertentu.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tipe any dan Alasan Menghindarinya” gratis?

Ya — teks lengkap “Tipe any dan Alasan Menghindarinya” 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 “Tipe any dan Alasan Menghindarinya”?

Pahami any dan kapan tipe ini menggagalkan tujuan TypeScript. 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 2 dari 4.

Berapa lama pelajaran “Tipe any dan Alasan Menghindarinya” 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