Zod
Intro

Zod

Zod adalah sebuah TypeScript schema validator yang sangat mudah digunakan dan sangat mudah untuk dipahami. Zod juga mendukung untuk validasi asynchronous. Zod juga mendukung untuk validasi data yang berbentuk nested object.

Instalasi

pnpm install zod

Zod Types

TypeDescription
z.string()Validasi untuk string
z.number()Validasi untuk number
z.boolean()Validasi untuk boolean
z.undefined()Validasi untuk undefined
z.null()Validasi untuk null
z.any()Validasi untuk any
z.unknown()Validasi untuk unknown
z.void()Validasi untuk void
z.never()Validasi untuk never
z.literal()Validasi untuk literal
z.enum()Validasi untuk enum
z.nativeEnum()Validasi untuk native enum
z.function()Validasi untuk function
z.record()Validasi untuk record
z.tuple()Validasi untuk tuple
z.array()Validasi untuk array
z.object()Validasi untuk object
z.union()Validasi untuk union
z.intersection()Validasi untuk intersection
z.promise()Validasi untuk promise
z.lazy()Validasi untuk lazy
z.date()Validasi untuk date
z.bigint()Validasi untuk bigint
z.optional()Validasi untuk optional
z.nullable()Validasi untuk nullable

Contoh Penggunaan

import { z } from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number(),
});
 
const data = {
  name: "John Doe",
  age: 20,
};
 
schema.parse(data);

Contoh Penggunaan untuk Validasi Asynchronous

import { z } from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number(),
});
 
const data = {
  name: "John Doe",
  age: 20,
};
 
schema.parseAsync(data);

Contoh Penggunaan untuk Validasi Nested Object

import { z } from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number(),
  address: z.object({
    street: z.string(),
    city: z.string(),
    country: z.string(),
  }),
});
 
const data = {
  name: "John Doe",
  age: 20,
  address: {
    street: "Jl. Raya",
    city: "Jakarta",
    country: "Indonesia",
  },
};
 
schema.parse(data);

Contoh Penggunaan untuk Validasi Array

import { z } from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number(),
  address: z.object({
    street: z.string(),
    city: z.string(),
    country: z.string(),
  }),
  hobbies: z.array(z.string()),
});
 
const data = {
  name: "John Doe",
  age: 20,
  address: {
    street: "Jl. Raya",
    city: "Jakarta",
    country: "Indonesia",
  },
  hobbies: ["Coding", "Reading", "Writing"],
};
 
schema.parse(data);