0Pricing
TypeScript Academy · Lektion

zod/valibot-Schemas + Inferenz

Validieren Sie nicht vertrauenswürdige Daten mit Schemas, leiten Sie TS-Typen direkt aus den Validatoren ab, vergleichen Sie zod und valibot und binden Sie sie in Handler ein.

zod/valibot-Schemas + Inferenz ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 2. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 2 Lektionen.

Einführung

Ziel: Behandeln Sie externe Eingaben als unknown, validieren Sie sie mit einem Schema und inferieren Sie daraus TS-Typen. Sie verwenden zod, sehen die valibot-Syntax und erstellen einen kleinen Helper für Handler.

  • Eine einzige Quelle der Wahrheit
  • safeParse vs. parse
  • Inferierte Typen wiederverwenden

zod-Inferenz

Definieren Sie ein Schema einmalig. type User = z.infer<typeof userSchema> bildet die Validierungsregeln exakt ab.

import { z } from "zod"

export const userSchema = z.object({
  id: z.string().uuid(),
  name: z.string().min(1),
  age: z.number().int().min(0).optional()
})

export type User = z.infer<typeof userSchema>

// User is kept in sync with runtime rules.

safeParse vs. parse

safeParse liefert ein Ergebnis mit Erfolg oder Fehlschlag, ohne eine Ausnahme auszulösen – ideal für HTTP-Handler; parse löst bei ungültigen Eingaben eine Ausnahme aus.

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

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

// parse() throws; safeParse() returns a discriminated union

valibot-Inferenz

valibot bietet einen kompakten Validator mit Infer<typeof schema>. Wählen Sie eine Bibliothek und verwenden Sie sie im gesamten Team einheitlich.

import { object, string, number, optional, minLength, uuid, minValue } from "valibot"
import type { Infer } from "valibot"

export const VUser = object({
  id: string([uuid()]),
  name: string([minLength(1)]),
  age: optional(number([minValue(0)]))
})

export type VUserT = Infer<typeof VUser>

// Similar idea: one schema, inferred type.

Validierungs-Helper

Kapseln Sie das Parsen in einem kleinen Helper, damit Handler eine einfache Struktur wie { ok,data } bzw. { ok:false,issues } erhalten.

import { ZodTypeAny } from "zod"

export function validate<T extends ZodTypeAny, Out = unknown>(schema: T, value: unknown, onError?: (issues: unknown) => never | void): { ok: true; data: Out } | { ok: false; issues: unknown } {
  const r = schema.safeParse(value)
  if (!r.success) {
    const issues = r.error.format()
    if (onError) onError(issues as unknown as never)
    return { ok: false, issues }
  }
  return { ok: true, data: r.data as unknown as Out }
}

Tipps

Tipps:

  • Halten Sie Schemas nahe an der Grenze (HTTP, CLI, Datenbank-E/A).
  • Inferieren Sie Typen und exportieren Sie sie – vermeiden Sie doppelte, von Hand geschriebene Definitionen.
  • Geben Sie 400 mit Details zu den Problemen zurück; vertrauen Sie niemals Client-Eingaben.

Prüfung des Inferenzvorteils

Schnellprüfung: Warum sollten Typen aus Schemas inferiert werden?

Zusammenfassung

Zusammenfassung: Validieren Sie unbekannte Eingaben mit zod/valibot, verwenden Sie safeParse und inferieren Sie Typen, damit Compile-Zeit und Laufzeit konsistent bleiben.

Häufig gestellte Fragen

Ist die Lektion „zod/valibot-Schemas + Inferenz“ kostenlos?

Ja — der vollständige Text von „zod/valibot-Schemas + Inferenz“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 2 Lektionen.

Was lerne ich in „zod/valibot-Schemas + Inferenz“?

Validieren Sie nicht vertrauenswürdige Daten mit Schemas, leiten Sie TS-Typen direkt aus den Validatoren ab, vergleichen Sie zod und valibot und binden Sie sie in Handler ein. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 2.

Wie lange dauert die Lektion „zod/valibot-Schemas + Inferenz“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. zod/valibot-Schemas + Inferenz
  2. Defensives Parsen und Fehlerumschläge
← Zurück zu TypeScript Academy