TypeScript Academy · Pelajaran

satisfies berbanding Penegasan as

Sebab satisfies lebih selamat daripada menukar jenis dengan as.

Pelajaran 3 daripada 413 langkah

satisfies berbanding Penegasan as ialah pelajaran TypeScript Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran TypeScript Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Perkara yang Dilakukan oleh as

Penegasan as memberitahu pengompil supaya mempercayai anda tentang sesuatu jenis. Ia tidak menyemak sama ada nilai itu benar-benar sepadan; ia hanya mengatasi jenis yang diinferens.

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

as Memintas Keselamatan

Oleh sebab as melangkau pengesahan, ia boleh menyembunyikan pepijat sebenar. Objek di atas tiada size, namun TypeScript tidak memberikan sebarang amaran.

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 Mengesahkan Sebaliknya

Menggantikan as dengan satisfies menukarkan pepijat senyap itu kepada ralat pengompilan yang jelas kerana objek tersebut benar-benar mesti sepadan dengan jenis itu.

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 Boleh Memaksa Jenis yang Salah

Anda juga boleh menegaskan jenis yang langsung tidak serasi menggunakan penegasan berganda, yang berbahaya dan sepatutnya jarang digunakan.

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

satisfies Tidak Pernah Mengelirukan tentang Nilai

Tidak seperti as, satisfies tidak boleh digunakan untuk mendakwa jenis yang tidak serasi. Ia hanya mengesahkan bahawa nilai tersebut sudah sepadan.

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

as Kehilangan Semakan Sifat Berlebihan

Dengan as, kunci tambahan atau kunci yang tersalah eja boleh terlepas. satisfies masih menandakannya dan mengesan kesilapan ejaan.

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));

Bila as Benar-benar Diperlukan

as mempunyai kegunaan yang sah, seperti mengecilkan unknown selepas semakan masa jalan atau bekerja dengan DOM. Namun, untuk objek config, 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 Config

Untuk konfigurasi, peta laluan dan palet, satisfies memberikan pengesahan serta inferens tepat. as tidak memberikan pengesahan mahupun jaminan.

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

as const Berbeza

Jangan kelirukan as const dengan penegasan jenis. as const mengecilkan kepada literal dan menjadikan perkara tidak boleh ubah; ia selamat dan sering digandingkan dengan satisfies.

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

Ringkasan Risiko

as: mengatasi pengompil, tiada semakan dan boleh menyembunyikan pepijat. satisfies: bekerjasama dengan pengompil, semakan lengkap dan mengekalkan inferens. Pilih satisfies sebagai lalai.

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

Memfaktorkan Semula as kepada satisfies

Tabiat yang baik: apabila anda melihat as SomeObjectType pada literal yang anda kawal, cuba tukarkannya kepada satisfies dan baiki apa-apa ralat 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);

Semakan Ringkas: satisfies berbanding as

Uji pemahaman anda tentang satisfies berbanding as.

Imbas Kembali: Penegasan satisfies berbanding as

Anda telah mempelajari bahawa as memintas semakan dan boleh menyembunyikan pepijat, manakala satisfies mengesahkan nilai serta mengekalkan inferens tepat. Utamakan satisfies untuk objek config yang anda kawal.

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

Pelajari TypeScript dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
101
Pelajaran
352

Soalan Lazim

Adakah pelajaran “satisfies berbanding Penegasan as” percuma?

Ya — teks penuh “satisfies berbanding Penegasan as” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus TypeScript Academy, tingkat taraf kepada CoddyKit PRO. Kursus TypeScript Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “satisfies berbanding Penegasan as”?

Sebab satisfies lebih selamat daripada menukar jenis dengan as. Anda berlatih TypeScript Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan TypeScript Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran TypeScript Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “satisfies berbanding Penegasan as” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran TypeScript Academy ini?

Ya. Setiap pelajaran TypeScript Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa satisfies Wujud
  2. satisfies berbanding Anotasi Jenis
  3. satisfies berbanding Penegasan as
  4. Corak satisfies Praktikal
← Kembali ke TypeScript Academy