Przejdź do treści

Konwerter TypeScript na schemat Zod — Numio

Generuje schematy ZOD na podstawie interfejsów i typów TypeScript z ts-to-zod. Każdy typ Foo staje się eksportowanym fooSchema, a tagi JSDoc, takie jak @format email lub @minimum, stają się walidatorami Zod.

Twoje typy API już istnieją jako interfejsy TypeScript i chcesz, aby sprawdzanie poprawności przychodzących żądań w czasie wykonywania było możliwe bez ręcznego pisania schematów.

TypeScript

Zod Schema

Kiedy go używać

  • Twoje typy API już istnieją jako interfejsy TypeScript i chcesz, aby sprawdzanie poprawności przychodzących żądań w czasie wykonywania było możliwe bez ręcznego pisania schematów.
  • Sprawdzasz poprawność danych wprowadzanych w formularzu za pomocą Zoda i chcesz, aby schemat pozostał spójny ze współdzielonym typem TypeScript.

Jak używać

  1. Wklej interfejsy TypeScript lub aliasy typów; dodaj tagi JSDoc, takie jak @minimum 13 lub @format e-mail, aby uzyskać walidatory.
  2. W ustawieniach włącz opcję Zachowaj komentarze TSDoc, aby skopiować komentarze do danych wyjściowych, lub Pomiń tworzenie walidatorów zod z adnotacji JSDoc, aby zignorować tagi.
  3. Kod źródłowy jest konwertowany lokalnie w przeglądarce; skopiuj wynik importujący z z biblioteki "zod".

TypeScript

export interface Signup {
  /**
   * @format email
   */
  email: string;
  /**
   * @minimum 13
   * @maximum 120
   */
  age: number;
  plan: "free" | "pro";
  referrer?: string | null;
  createdAt: Date;
}

Schematy Zoda

import { z } from "zod"

export const signupSchema = z.object({
  email: z.string().email(),
  age: z.number().min(13).max(120),
  plan: z.union([z.literal("free"), z.literal("pro")]),
  referrer: z.string().optional().nullable(),
  createdAt: z.date(),
})

Szczegóły i ograniczenia

Konwersja odbywa się lokalnie w Web Workerze w przeglądarce. Dane wejściowe nie są wysyłane na serwer konwersji. Wymagane moduły są pobierane przy pierwszym użyciu narzędzia.

Konwertowane są tylko typy. Wyeksportowane funkcje i stałe nie tworzą żadnego schematu.

Jeśli typ odwołuje się do typu, którego nie ma na wejściu, konwerter zgłosi błąd braku zależności zamiast emitować schemat.

Schematy są uporządkowane według zależności, więc typ odniesienia, taki jak Author, jest emitowany przed typem, który go używa.

FAQ

Jak konwertowane są pola opcjonalne i null?

strona odsyłająca?: ciąg | null staje się z.string().opcjonalne().nullable(); właściwość o typie Autor | null staje się authorSchema.nullable().

Jak obsługiwany jest typ Date?

Właściwość Date staje się z.date(), która akceptuje obiekty Date, a nie łańcuchy ISO. Użyj z.coerce.date() dla danych wejściowych JSON.

Dlaczego pojawia się komunikat "Some schemas can't be generated due to direct or indirect missing dependencies"?

Typ odwołuje się do innego typu, którego nie ma w wklejonym kodzie. Wklej także typy, do których istnieją odniesienia.

Specyfikacje i referencje