Naar de inhoud

TypeScript naar Zod Schema Transformer — Numio

Genereert Zod-schema's van TypeScript-interfaces en -typen met ts-to-zod. Elk type Foo wordt een geëxporteerde fooSchema, en JSDoc-tags zoals @format email of @minimum worden Zod-validators.

Uw API-typen bestaan al als TypeScript-interfaces en u wilt runtime-validatie van inkomende verzoeken zonder handmatig schema's te schrijven.

TypeScript

Zod Schema

Wanneer gebruik je dit?

  • Uw API-typen bestaan al als TypeScript-interfaces en u wilt runtime-validatie van inkomende verzoeken zonder handmatig schema's te schrijven.
  • U valideert formulierinvoer met Zod en wilt dat het schema consistent blijft met het gedeelde TypeScript-type.

Hoe werkt het

  1. Plak TypeScript-interfaces of typ aliassen; voeg JSDoc-tags toe zoals @minimum 13 of @format e-mail om validators te krijgen.
  2. Schakel in de instellingen Keep TSDoc Comments in om commentaar naar de uitvoer te kopiëren, of sla het maken van zod-validators uit JSDoc-annotaties over om de tags te negeren.
  3. De broncode wordt lokaal in je browser geconverteerd. Kopieer de code die z importeert uit "zod".

TypeScript

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

Zod-schema's

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(),
})

Details en beperkingen

De conversie vindt lokaal plaats in een Web Worker in je browser. Je invoer wordt niet naar een conversieserver verstuurd. De benodigde bibliotheken worden in de browser geladen.

Alleen typen worden geconverteerd. Geëxporteerde functies en constanten produceren geen schema.

Als een type verwijst naar een type dat niet in de invoer voorkomt, rapporteert de converter een ontbrekende afhankelijkheidsfout in plaats van een schema uit te zenden.

Schema's worden geordend op afhankelijkheid, zodat een type waarnaar wordt verwezen, zoals Auteur, wordt verzonden vóór het type dat er gebruik van maakt.

FAQ

Hoe worden optionele en null-velden geconverteerd?

verwijzer?: string | null wordt z.string().optioneel().nullable(); een eigenschap met het type Auteur | null wordt authorSchema.nullable().

Hoe wordt met Date omgegaan?

Een Date-eigenschap wordt z.date(), die Date-objecten accepteert, geen ISO-tekenreeksen. Gebruik z.coerce.date() voor JSON-invoer.

Waarom krijg ik de melding "Sommige schema's kunnen niet worden gegenereerd vanwege directe of indirecte ontbrekende afhankelijkheden"?

Een type verwijst naar een ander type dat niet in de geplakte code voorkomt. Plak ook de typen waarnaar wordt verwezen.

Specificaties en referenties