💎 Zod 4 is now stable!  Read the announcement.
Zod logo

Zod

zod/v4 パッケージは、Zod エコシステムの「フラッグシップ」ライブラリです。開発者体験とバンドルサイズのバランスがとれており、大部分のアプリケーションに最適です。

バンドルサイズに関して特に厳しい制約がある場合は、Zod Mini を検討してください。

Zod は、TypeScript の型システムと1対1で対応するスキーマ API を提供することを目指しています。

import * as z from "zod";
 
const schema = z.object({
  name: z.string(),
  age: z.number().int().positive(),
  email: z.email(),
});

この API はメソッドに依存しており、複雑な型を定義するための、簡潔でチェーン可能(chainable)な、オートコンプリートに適した方法を提供します。

z.string()
  .min(5)
  .max(10)
  .toLowerCase();

すべてのスキーマは z.ZodType 基底クラスを継承しており、これはさらに zod/v4/corez.$ZodType を継承しています。ZodType のすべてのインスタンスは、以下のメソッドを実装しています。

import * as z from "zod";
 
const mySchema = z.string();
 
// パース (解析)
mySchema.parse(data);
mySchema.safeParse(data);
mySchema.parseAsync(data);
mySchema.safeParseAsync(data);
 
 
// リファインメント (詳細化)
mySchema.refine(refinementFunc);
mySchema.superRefine(refinementFunc); // 非推奨, `.check()` を使用してください
mySchema.overwrite(overwriteFunc);
 
// ラッパー
mySchema.optional();
mySchema.nonoptional();
mySchema.nullable();
mySchema.nullish();
mySchema.default(defaultValue);
mySchema.array();
mySchema.or(otherSchema);
mySchema.transform(transformFunc);
mySchema.catch(catchValue);
mySchema.pipe(otherSchema);
mySchema.readonly();
 
// メタデータとレジストリ
mySchema.register(registry, metadata);
mySchema.describe(description);
mySchema.meta(metadata);
 
// ユーティリティ
mySchema.check(checkOrFunction);
mySchema.clone(def);
mySchema.brand<T>();
mySchema.isOptional(); // boolean
mySchema.isNullable(); // boolean