Learning
Zod

TypeScript integráció

z.infer használata, típusok exportálása, leszármaztatott schema-k és típusszűkítés safeParse után.

z.infer – típus kinyerése sémából

import { z } from "zod"

const userSchema = z.object({
  id: z.string().uuid(),
  name: z.string().min(1),
  age: z.number().int().positive(),
  role: z.enum(["admin", "user"]),
  address: z
    .object({
      city: z.string(),
      country: z.string(),
    })
    .optional(),
})

type User = z.infer<typeof userSchema>

Sémák és típusok exportálása

import { z } from "zod"

export const userSchema = z.object({
  id: z.string().uuid(),
  name: z.string(),
  email: z.string().email(),
})

export type User = z.infer<typeof userSchema>

export const createUserSchema = userSchema.omit({ id: true })
export type CreateUserInput = z.infer<typeof createUserSchema>

export const updateUserSchema = createUserSchema.partial()
export type UpdateUserInput = z.infer<typeof updateUserSchema>

Típusszűkítés validáció után

function processUser(data: unknown) {
  const result = userSchema.safeParse(data)
  if (!result.success) return null
  return result.data.name.toUpperCase()
}

On this page