0Pricing
TypeScript Academy · Lektion

parse und safeParse

Behandeln Sie erfolgreiche und fehlgeschlagene Validierungen elegant.

parse und safeParse ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. 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 4 Lektionen.

Zwei Möglichkeiten zur Validierung

Zod bietet zwei Validierungsmethoden: parse löst bei ungültigen Daten einen Fehler aus, während safeParse stattdessen ein Ergebnisobjekt zurückgibt.

import { z } from "zod";
const schema = z.string();
// schema.parse(x) throws on failure
// schema.safeParse(x) returns { success, ... }

parse löst bei ungültigen Daten einen Fehler aus

parse gibt bei Erfolg den validierten Wert zurück und löst bei einem Fehler einen ZodError aus. Das ist ideal, wenn ungültige Daten wirklich eine Ausnahme darstellen.

import { z } from "zod";
const schema = z.number();
const ok = schema.parse(42); // 42
// schema.parse("nope"); // throws ZodError

Parse-Fehler abfangen

Umschließen Sie parse mit try/catch, um den ausgelösten Fehler zu behandeln und daraus Details zum Fehler zu untersuchen.

import { z } from "zod";
const schema = z.number();
try {
  schema.parse("nope");
} catch (err) {
  if (err instanceof z.ZodError) {
    console.log("Invalid:", err.issues.length);
  }
}

safeParse gibt ein Ergebnis zurück

safeParse löst niemals einen Fehler aus. Es gibt ein Objekt mit success: true und data oder mit success: false und error zurück.

import { z } from "zod";
const schema = z.number();
const result = schema.safeParse("nope");
// result is { success: false, error: ZodError }

Das Ergebnis eingrenzen

Das Ergebnis ist eine diskriminierte Union auf Grundlage von success. Durch dessen Prüfung wird der Typ auf entweder data oder error eingegrenzt.

import { z } from "zod";
const schema = z.object({ id: z.number() });
const result = schema.safeParse({ id: 1 });
if (result.success) {
  console.log(result.data.id); // typed
} else {
  console.log(result.error.issues);
}

Wann parse verwendet wird

Verwenden Sie parse, wenn eine ungültige Eingabe ein Fehler ist oder den Vorgang abbrechen soll, etwa beim Einlesen einer erforderlichen Konfiguration zum Startzeitpunkt.

import { z } from "zod";
const configSchema = z.object({ port: z.number() });
const config = configSchema.parse({ port: 8080 });
// Fail fast if config is wrong.

Wann safeParse verwendet wird

Verwenden Sie safeParse, wenn ungültige Eingaben erwartet werden und Sie sie kontrolliert behandeln möchten, etwa bei der Validierung von Formulareingaben.

import { z } from "zod";
const formSchema = z.object({ email: z.string() });
const r = formSchema.safeParse({ email: 123 });
if (!r.success) {
  // Show a friendly validation message
}

ZodError-Issues auslesen

Ein ZodError enthält ein issues-Array, das jedes Problem beschreibt: den Pfad, eine Meldung und den Fehlercode.

import { z } from "zod";
const schema = z.object({ age: z.number() });
const r = schema.safeParse({ age: "x" });
if (!r.success) {
  for (const issue of r.error.issues) {
    console.log(issue.path, issue.message);
  }
}

Beide geben den inferierten Typ zurück

Bei Erfolg liefern beide Methoden den validierten Wert, typisiert als z.infer<typeof schema>, sodass der nachgelagerte Code vollständig typisiert bleibt.

import { z } from "zod";
const userSchema = z.object({ name: z.string() });
type User = z.infer<typeof userSchema>;
const u: User = userSchema.parse({ name: "Ada" });
console.log(u.name);

Die richtige Methode auswählen

Als Faustregel gilt: parse für vertrauenswürdige oder kritische Pfade, bei denen ein Fehler die Ausführung anhalten soll; safeParse für nicht vertrauenswürdige Eingaben, die Sie ohne Absturz behandeln müssen.

import { z } from "zod";
const schema = z.string();
// Critical: schema.parse(value)
// User-facing: schema.safeParse(value)

Beide Ansätze kombinieren

Ein gängiges Muster kapselt safeParse in einem Hilfsprogramm, das typisierte Daten oder einen formatierten Fehler zurückgibt und so die Vorteile beider Methoden vereint.

import { z } from "zod";
function validate<T extends z.ZodType>(schema: T, value: unknown) {
  const r = schema.safeParse(value);
  return r.success ? { ok: true, data: r.data } : { ok: false, error: r.error };
}
// Reusable, no throwing.

Kurzer Check: parse vs. safeParse

Testen Sie Ihr Verständnis von parse und safeParse.

Zusammenfassung: parse vs. safeParse

Sie haben gelernt, dass parse bei ungültigen Daten einen Fehler auslöst, während safeParse ein success/error-Ergebnis zurückgibt, wann die jeweilige Methode eingesetzt wird und wie ZodError-Issues ausgelesen werden.

import { z } from "zod";
const schema = z.object({ id: z.number() });
const r = schema.safeParse({ id: 1 });
if (r.success) console.log(r.data.id);

Häufig gestellte Fragen

Ist die Lektion „parse und safeParse“ kostenlos?

Ja — der vollständige Text von „parse und safeParse“ 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 4 Lektionen.

Was lerne ich in „parse und safeParse“?

Behandeln Sie erfolgreiche und fehlgeschlagene Validierungen elegant. 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 3 von 4.

Wie lange dauert die Lektion „parse und safeParse“?

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. Grundlagen von Zod-Schemas
  2. Typen aus Schemas ableiten
  3. parse und safeParse
  4. Schemas kombinieren und verfeinern
← Zurück zu TypeScript Academy