📘

Zod の型推論機能(z.infer)

に公開

概要

Zod は、自分自身で定義したスキーマから静的型を自動推論できます。この推論された型は z.infer<> を使って抽出でき、好きなように使用できます。

基本的な型推論(Inferring types)

基本例

const Player = z.object({
  username: z.string(),
  xp: z.number(),
});

// 推論された型を抽出
type Player = z.infer<typeof Player>;
// 結果: { username: string; xp: number; }

// コードで使用
const player: Player = {
  username: "billie",
  xp: 100,
};

詳しい解説

1. なぜ typeof Player を使うのか?

const Player = z.object({ ... }); // これは値(スキーマオブジェクト)

type Player = z.infer<typeof Player>;
//                    ^^^^^^^^^^^^^^
//                    値から型を取得
  • Player は実行時の値(Zod スキーマオブジェクト)
  • typeof Player はその値の型を取得
  • z.infer<> はその型から実際のデータ型を推論

Discussion