00
:
00
:
00
:
00
Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

Inferenza dei Tipi

z.infer

Questa è la “magia” di Zod. Non hai bisogno di definire un’interfaccia TypeScript separata dal tuo schema di validazione.

```typescript import { z } from “zod”;

const UserSchema = z.object({ username: z.string(), email: z.string().email(), age: z.number().optional(), tags: z.array(z.string()), });

// Estrai il tipo TypeScript type User = z.infer;

// Ora ‘User’ è equivalente a: // { // username: string; // email: string; // age?: number | undefined; // tags: string[]; // } ```

Trasformazioni (.transform)

Se usi .transform(), il tipo inferito sarà quello dell’output della trasformazione.

```typescript const stringToNumber = z.string().transform((val) => val.length);

type Output = z.infer; // number type Input = z.input; // string ```

Notare z.input e z.output (che z.infer usa di default). Questo è utilissimo quando i dati che ricevi (es. stringa “123” da un form) sono diversi da quelli che vuoi usare nella logica (numero 123).