0Pricing
TypeScript Academy · Pelajaran

satisfies versus Pernyataan as

Pahami alasan satisfies lebih aman daripada casting dengan as.

satisfies versus Pernyataan as 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.

Fungsi as

Penegasan as memberi tahu kompilator untuk memercayai Anda mengenai suatu tipe. Penegasan ini tidak memeriksa apakah nilai tersebut benar-benar sesuai; penegasan ini hanya mengganti tipe hasil inferensi.

const value = { color: "red" } as { color: string; size: number };
// No error even though size is missing!
console.log(value.color);

as Melewati Pengamanan

Karena as melewati validasi, penegasan ini dapat menyembunyikan bug nyata. Objek di atas tidak memiliki size, tetapi TypeScript tetap diam.

type Config = { color: string; size: number };
const broken = { color: "red" } as Config;
// broken.size is typed number but is actually undefined at runtime
console.log(broken.size); // undefined

satisfies Memvalidasi sebagai Pengganti

Mengganti as dengan satisfies mengubah bug yang sebelumnya diam menjadi kesalahan kompilasi yang jelas, karena objek tersebut memang harus sesuai dengan tipe.

type Config = { color: string; size: number };
// const c = { color: "red" } satisfies Config; // Error: size missing
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.size);

as Dapat Memaksakan Tipe yang Salah

Anda bahkan dapat menegaskan tipe yang sepenuhnya tidak kompatibel dengan penegasan ganda, yang berbahaya dan sebaiknya jarang dilakukan.

const n = "hello" as unknown as number;
// n is typed number but is actually a string
console.log(typeof n); // "string"

satisfies Tidak Pernah Berbohong tentang Nilai

Tidak seperti as, satisfies tidak dapat digunakan untuk menyatakan tipe yang tidak kompatibel. Operator ini hanya mengonfirmasi bahwa nilai tersebut memang sudah sesuai.

// const x = "hello" satisfies number; // Error: string not assignable to number
const y = 42 satisfies number;
console.log(y);

as Menghilangkan Pemeriksaan Properti Berlebih

Dengan as, kunci tambahan atau kunci yang salah eja dapat lolos. satisfies tetap menandainya sehingga kesalahan ketik dapat ditemukan.

type Config = { mode: string };
const withAs = { mdoe: "dark" } as Config;   // typo passes silently
// const withSat = { mdoe: "dark" } satisfies Config; // Error: mdoe
console.log(JSON.stringify(withAs));

Kapan as Benar-Benar Diperlukan

as memiliki penggunaan yang valid, seperti mempersempit unknown setelah pemeriksaan saat runtime atau saat bekerja dengan DOM. Namun, untuk objek konfigurasi, pilih satisfies.

const data: unknown = JSON.parse("{ }");
// After your own runtime validation, as can express the result.
const obj = data as Record<string, unknown>;
console.log(typeof obj);

Mengutamakan satisfies untuk Konfigurasi

Untuk konfigurasi, peta rute, dan palet, satisfies memberikan validasi sekaligus inferensi presisi. as tidak memberikan validasi maupun jaminan.

type Palette = Record<string, string>;
const safe = { primary: "blue", accent: "gold" } satisfies Palette;
console.log(safe.primary);

as const Itu Berbeda

Jangan menyamakan as const dengan penegasan tipe. as const mempersempit menjadi literal dan membuat sesuatu hanya dapat dibaca; cara ini aman dan sering dipadukan dengan satisfies.

type Nums = readonly number[];
const xs = [1, 2, 3] as const satisfies Nums;
console.log(xs[0]);

Ringkasan Risiko

as: mengganti keputusan kompilator, tanpa pemeriksaan, dan dapat menyembunyikan bug. satisfies: bekerja sama dengan kompilator, melakukan pemeriksaan menyeluruh, dan mempertahankan inferensi. Pilih satisfies secara bawaan.

type Config = { level: number };
// const risky = {} as Config; // compiles, level is undefined
const safe = { level: 1 } satisfies Config;
console.log(safe.level);

Memfaktorkan Ulang as menjadi satisfies

Kebiasaan yang baik: saat melihat as SomeObjectType pada literal yang Anda kendalikan, coba ubah menjadi satisfies dan perbaiki kesalahan apa pun yang muncul.

type Config = { url: string; retries: number };
// Before: const c = { url: "/api" } as Config;
const c = { url: "/api", retries: 3 } satisfies Config;
console.log(c.url, c.retries);

Pemeriksaan Singkat: satisfies vs as

Uji pemahaman Anda tentang satisfies dibandingkan dengan as.

Ringkasan: satisfies vs Penegasan as

Anda telah mempelajari bahwa as melewati pemeriksaan dan dapat menyembunyikan bug, sedangkan satisfies memvalidasi nilai dan mempertahankan inferensi presisi. Utamakan satisfies untuk objek konfigurasi yang Anda kendalikan.

type Config = { color: string; size: number };
const c = { color: "red", size: 10 } satisfies Config;
console.log(c.color, c.size);

Pertanyaan yang Sering Diajukan

Apakah pelajaran “satisfies versus Pernyataan as” gratis?

Ya — teks lengkap “satisfies versus Pernyataan as” 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 “satisfies versus Pernyataan as”?

Pahami alasan satisfies lebih aman daripada casting dengan as. 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 “satisfies versus Pernyataan as” 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. Mengapa satisfies Ada
  2. satisfies versus Anotasi Jenis
  3. satisfies versus Pernyataan as
  4. Pola satisfies Praktis
← Kembali ke TypeScript Academy