Fungsi predikat & operator satisfies
Tulis penjaga tipe khusus dengan tipe pengembalian predikat dan validasi objek dengan operator satisfies tanpa memperlebar tipe.
Fungsi predikat & operator satisfies adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. 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 3 pelajaran total.
Pendahuluan
Tujuan: Bangun fungsi predikat yang mempersempit tipe (misalnya, value is T) dan gunakan satisfies untuk memeriksa bentuk tanpa memperlebar tipe.
- Penjaga khusus = pemeriksaan saat program berjalan yang dapat digunakan ulang
satisfies= pemeriksaan bentuk saat kompilasi, mempertahankan literal
Dasar-dasar predikat
Fungsi predikat mengembalikan x is Type. Setelah pemeriksaan, variabel dipersempit dalam cakupan tersebut.
function isNumber(x: unknown): x is number {
return typeof x === "number"
}
function demo(a: unknown) {
if (isNumber(a)) {
// inside: a is number
return a.toFixed(2)
}
return "not a number"
}Penjaga bentuk
Penjaga memeriksa bentuk objek; jika lolos, objek dipersempit menjadi User dan dapat digunakan dengan aman.
type User = { id: number; name: string }
function isUser(v: unknown): v is User {
return typeof v === "object" && v !== null &&
"id" in v && "name" in v &&
typeof (v as any).id === "number" &&
typeof (v as any).name === "string"
}
function printUser(u: unknown) {
if (isUser(u)) {
console.log(u.name.toUpperCase())
} else {
console.log("invalid user")
}
}Melintasi batas
Penjaga memastikan perpindahan yang aman melintasi batas fungsi: unknown di luar, User yang terkontrol di dalam.
function fetchAndPrint(json: string) {
const value: unknown = JSON.parse(json)
if (isUser(value)) {
// value narrowed to User
console.log(`User #${value.id}: ${value.name}`)
} else {
console.log("Bad payload")
}
}satisfies (konfigurasi)
satisfies memeriksa apakah ekspresi sesuai dengan Confige, tetapi mempertahankan tipe literal variabel.
type Config = { mode: "dev" | "prod"; retries: number }
const cfg = {
mode: "prod",
retries: 3,
// timeout: 1000, // Error with satisfies if not in type
} satisfies Config
// cfg.mode is still the literal "prod" (not widened to string)
// and adding unknown keys raises an error at compile-timesatisfies (larik)
Dalam larik, bentuk elemen divalidasi dengan as const satisfies; nilai literal dipertahankan, dan pelengkapan otomatis ditingkatkan.
type Route = { path: `/${string}`; method: "GET" | "POST" }
const routes = [
{ path: "/", method: "GET" },
{ path: "/login", method: "POST" }
] as const satisfies ReadonlyArray<Route>
// each element is checked against Route, literals preserved for DXPemeriksaan satisfies
Pemeriksaan singkat: Apa yang sebenarnya dilakukan satisfies?
Ringkasan
Ringkasan: Predikat (x is T) menjadi kontrak; satisfies mengonfirmasi bentuk dan mempertahankan tipe literal. Gunakan keduanya bersama-sama.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Fungsi predikat & operator satisfies” gratis?
Ya — teks lengkap “Fungsi predikat & operator satisfies” 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 3 pelajaran total.
Apa yang akan aku pelajari di “Fungsi predikat & operator satisfies”?
Tulis penjaga tipe khusus dengan tipe pengembalian predikat dan validasi objek dengan operator satisfies tanpa memperlebar tipe. 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 3.
Berapa lama pelajaran “Fungsi predikat & operator satisfies” 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
- Switch lengkap & pemeriksaan never
- Fungsi predikat & operator satisfies
- Menyempurnakan union lintas batas fungsi