0Pricing
TypeScript Academy · Pelajaran

Validasi skema dengan zod & inferensi ke TS

Validasi permintaan dengan zod; simpulkan tipe TypeScript dari skema; tambahkan middleware dan penanganan kesalahan yang aman.

Validasi skema dengan zod & inferensi ke TS 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: Validasi data masuk dengan zod dan jaga agar tipe TypeScript tetap selaras melalui z.infer. Anda akan mengurai data dengan aman, mengirim kesalahan yang membantu, dan memasukkan validasi ke middleware.

  • Definisikan skema sekali
  • Inferensikan tipe TS
  • safeParse + kesalahan 400

Skema dan inferensi

Modelkan sekali dengan zod. type User = z.infer<typeof userSchema> yang diturunkan mencerminkan validasi secara tepat.

import { z } from "zod"

export const userSchema = z.object({
  id: z.string().regex(/^u_[a-z0-9]+$/),
  name: z.string().min(1),
  age: z.number().int().nonnegative().optional()
})

export type User = z.infer<typeof userSchema>

// Reuse `User` across handlers, services, and tests

safeParse dalam penangan

Gunakan safeParse untuk menghindari pengecualian; kembalikan 400 dengan masalah yang telah diformat. Tipe respons mencerminkan bentuk keberhasilan dan kesalahan.

import { Request, Response } from "express"
import { userSchema, User } from "./schema"

export function createUser(req: Request<{}, User, unknown>, res: Response<User | { error: string; issues?: unknown }>) {
  const parsed = userSchema.safeParse(req.body)
  if (!parsed.success) {
    return res.status(400).json({ error: "Invalid body", issues: parsed.error.format() })
  }
  const user = parsed.data
  return res.status(201).json(user)
}

Pembantu middleware

Buat middleware yang dapat digunakan kembali. Middleware tersebut mengurai isi dan menyematkan data bertipe atau mengembalikan 400 dengan detail.

import { z } from "zod"
import { Request, Response, NextFunction } from "express"

export function validateBody<T extends z.ZodTypeAny>(schema: T) {
  return (req: Request, res: Response, next: NextFunction) => {
    const r = schema.safeParse(req.body)
    if (!r.success) {
      return res.status(400).json({ error: "Invalid body", issues: r.error.format() })
    }
    req.body = r.data
    next()
  }
}

Koersi & refine

Gunakan z.coerce untuk menerima angka berbentuk string, z.enum untuk nilai yang telah diketahui, dan .refine untuk aturan lintas kolom.

import { z } from "zod"

const signupSchema = z.object({
  email: z.string().email(),
  age: z.coerce.number().int().gte(13),
  role: z.enum(["user", "admin"]).default("user")
}).refine(v => v.role !== "admin" || v.age >= 18, { message: "admin must be adult" })

export type Signup = z.infer<typeof signupSchema>

// Coercion allows numbers in strings; refine adds cross-field rules

Kiat kesalahan

Kiat kesalahan:

  • Selalu gunakan safeParse di titik terluar.
  • Format masalah untuk klien; hindari membocorkan jejak tumpukan.
  • Persempit unknown menjadi ZodError jika Anda menangkap hasil parse yang dilempar.

Pemeriksaan inferensi zod

Pemeriksaan singkat: Bagaimana Anda menjaga agar tipe TS tetap selaras dengan skema zod?

Ringkasan

Ringkasan: Tentukan satu skema, simpulkan tipe TS, validasi dengan safeParse, lalu pasangkan ke perangkat tengah agar kesalahan 400 konsisten.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Validasi skema dengan zod & inferensi ke TS” gratis?

Ya — teks lengkap “Validasi skema dengan zod & inferensi ke TS” 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 “Validasi skema dengan zod & inferensi ke TS”?

Validasi permintaan dengan zod; simpulkan tipe TypeScript dari skema; tambahkan middleware dan penanganan kesalahan yang aman. 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 “Validasi skema dengan zod & inferensi ke TS” 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. Penangan rute Router, pengetikan Request/Response
  2. Validasi skema dengan zod & inferensi ke TS
  3. Middleware kesalahan & tipe hasil
← Kembali ke TypeScript Academy