TL;DR

TypeScript のバリデーションライブラリ。実行時に値が期待どおりの型であることを保証しつつ、型推論も効く。

TypeScript-first schema validation with static type inference

仕組み

プリミティブやオブジェクトの期待値を、スキーマオブジェクトとして定義して使う。バリデーションには parse 関数を使い、失敗すると ZodError 例外を投げる。

公式サイトによると、外部への依存がなく、コアのバンドルは gzip で 2 KB と小さい。Node.js と主要なブラウザで動く。API はイミュータブルで、メソッドは新しいインスタンスを返す。

例

文字列を期待するスキーマでは、"1" は通り、1 は ZodError になる。

import { z } from "zod"
 
const validationSchema = z.string()
 
const value1 = validationSchema.parse("1")
const value2 = validationSchema.parse(1)

オブジェクトのスキーマは次のように書く。

export const validationSchema = z.object({
  id: z.string(),
  name: z.string(),
  age: z.number(),
  bio: z.string().optional(),
  email: z.string().email(),
})
 
const payload = validationSchema.parse({
  id: "abc",
  name: "test",
  age: 20,
  email: "[email protected]",
})

注意点

TypeScript 5.5 以降でテストされており、それより古いバージョンは公式にはサポートされていない。tsconfig.json で strict モードを有効にする必要がある。

関連

  • Server Actions: フォームの入力値のバリデーションに使える

出典