0Pricing
TypeScript Academy · Pelajaran

Menyusun dan Menyempurnakan Skema

Bangun skema kompleks dengan refine, transform, dan union.

Menyusun dan Menyempurnakan Skema adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Schema Dapat Disusun

Schema Zod adalah blok pembangun yang dapat disusun. Anda dapat memperbaiki, mengubah, memperluas, dan menggabungkannya untuk memodelkan aturan validasi yang kompleks.

import { z } from "zod";
const base = z.object({ name: z.string() });
// We will add rules and combine schemas from here.

Aturan Khusus dengan refine

.refine menambahkan predikat validasi khusus beserta pesan kesalahan untuk aturan yang tidak tersedia secara bawaan dalam Zod.

import { z } from "zod";
const password = z.string().refine(
  (s) => s.length >= 8,
  { message: "Must be at least 8 characters" }
);
// password.parse("short") throws with that message.

Memperbaiki Lintas Bidang

Terapkan .refine pada objek untuk memvalidasi hubungan antarb idang, seperti mencocokkan konfirmasi password.

import { z } from "zod";
const form = z.object({
  password: z.string(),
  confirm: z.string()
}).refine((d) => d.password === d.confirm, {
  message: "Passwords must match"
});
// Validates both fields together.

Mengubah Nilai

.transform mengubah nilai yang telah divalidasi menjadi bentuk lain setelah validasi berhasil.

import { z } from "zod";
const trimmed = z.string().transform((s) => s.trim());
const result = trimmed.parse("  hi  "); // "hi"

Bidang Opsional

.optional() menjadikan bidang boleh tidak ada, yang tercermin dalam validasi maupun tipe hasil inferensi.

import { z } from "zod";
const schema = z.object({
  name: z.string(),
  bio: z.string().optional()
});
// bio may be omitted.

Nilai Default

.default menyediakan nilai ketika masukan tidak ada, sehingga hasil yang diuraikan selalu memiliki bidang yang terisi.

import { z } from "zod";
const schema = z.object({
  retries: z.number().default(3)
});
const r = schema.parse({}); // { retries: 3 }

Schema Union

z.union menerima nilai yang cocok dengan salah satu dari beberapa schema, setara dengan union TypeScript dalam Zod.

import { z } from "zod";
const id = z.union([z.string(), z.number()]);
// id.parse("abc") and id.parse(123) both succeed.

Union Terdiskriminasi dalam Zod

z.discriminatedUnion memvalidasi union bertag secara efisien dengan memilih berdasarkan bidang pembeda.

import { z } from "zod";
const shape = z.discriminatedUnion("kind", [
  z.object({ kind: z.literal("circle"), radius: z.number() }),
  z.object({ kind: z.literal("square"), side: z.number() })
]);
// Picks the right member by kind.

Menggabungkan dengan extend

.extend menambahkan bidang ke schema objek yang sudah ada, sehingga Anda dapat membangun schema yang lebih besar dari schema yang lebih kecil.

import { z } from "zod";
const base = z.object({ id: z.number() });
const user = base.extend({ name: z.string() });
// user validates { id: number; name: string }

Menggabungkan Schema Objek

Anda juga dapat menggabungkan dua schema objek dengan .merge, sehingga semua bidangnya menjadi satu schema.

import { z } from "zod";
const a = z.object({ x: z.number() });
const b = z.object({ y: z.string() });
const combined = a.merge(b);
// combined validates { x: number; y: string }

Merangkai Semuanya

Perbaikan, transformasi, nilai default, dan perluasan dapat dirangkai dengan lancar untuk menyatakan validasi yang kaya dalam satu schema yang mudah dibaca.

import { z } from "zod";
const signup = z.object({
  email: z.string().refine(s => s.includes("@"), { message: "Invalid email" }),
  age: z.number().default(18)
}).extend({
  newsletter: z.boolean().optional()
});
// One schema, many rules.

Pemeriksaan Singkat: Menyusun Schema

Uji pemahaman Anda tentang penyusunan dan penyempurnaan schema.

Ringkasan: Menyusun dan Menyempurnakan Schema

Anda telah mempelajari cara menambahkan aturan khusus dengan .refine, mengubah bentuk nilai dengan .transform, menangani data yang hilang dengan .optional dan .default, menggabungkan alternatif dengan z.union, serta mengembangkan schema dengan .extend dan .merge.

import { z } from "zod";
const schema = z.object({ name: z.string() })
  .extend({ age: z.number().default(0) })
  .refine(d => d.name.length > 0, { message: "Name required" });
// Composed validation in one place.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menyusun dan Menyempurnakan Skema” gratis?

Ya — teks lengkap “Menyusun dan Menyempurnakan Skema” 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 “Menyusun dan Menyempurnakan Skema”?

Bangun skema kompleks dengan refine, transform, dan union. 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 4 dari 4.

Berapa lama pelajaran “Menyusun dan Menyempurnakan Skema” 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. Dasar-Dasar Skema Zod
  2. Menyimpulkan Jenis dari Skema
  3. parse versus safeParse
  4. Menyusun dan Menyempurnakan Skema
← Kembali ke TypeScript Academy