Zod Core
このサブパッケージは、Zod と Zod Mini で使用されるコアクラスとユーティリティをエクスポートします。直接使用することを意図したものではなく、他のパッケージによって拡張されるように設計されています。これは以下を実装します:
スキーマ (Schemas)
すべての Zod スキーマの基底クラスは $ZodType です。これは2つのジェネリックパラメータ Output と Input を受け入れます。
zod/v4/core は、いくつかの一般的なパーサーを実装する多数のサブクラスをエクスポートします。すべてのファーストパーティサブクラスのユニオンは z.$ZodTypes としてエクスポートされます。
内部 (Internals)
zod/v4/core のすべてのサブクラスには、単一のプロパティ _zod のみが含まれています。このプロパティは、スキーマの 内部 (internals) を含むオブジェクトです。目的は、zod/v4/core を可能な限り拡張可能で、意見を持たない (unopinionated) ものにすることです。他のライブラリは、zod/v4/core がインターフェースを混乱させることなく、これらのクラスの上に「独自の Zod」を構築できます。これらのクラスを拡張する方法の例については、zod と zod/mini の実装を参照してください。
_zod 内部プロパティには、いくつかの注目すべきプロパティが含まれています。
.def— スキーマの 定義:これは、インスタンスを作成するためにクラスのコンストラクターに渡すオブジェクトです。スキーマを完全に記述し、JSON シリアル化可能です。.def.type— スキーマのタイプを表す文字列。例:"string","object","array"など。.def.checks— 解析後にスキーマによって実行される チェック の配列。
.input— スキーマの 推論された入力タイプ を「格納」する仮想プロパティ。.output— スキーマの 推論された出力タイプ を「格納」する仮想プロパティ。.run()— スキーマの内部パーサー実装。
Zod スキーマを走査する必要があるツール(たとえば、コードジェネレーター)を実装している場合は、任意のスキーマを $ZodTypes にキャストし、def プロパティを使用してこれらのクラスを区別できます。
$ZodString のサブクラスには、さまざまな 文字列形式 を実装するものがいくつかあります。これらは z.$ZodStringFormatTypes としてエクスポートされます。
パース (Parsing)
Zod Core スキーマクラスにはメソッドがないため、データを解析するためのトップレベル関数があります。
チェック (Checks)
すべての Zod スキーマには、チェック の配列が含まれています。これらは、推論された型に 影響を与えない 解析後の詳細化(および場合によっては変更)を実行します。
すべての Zod チェックの基底クラスは $ZodCheck です。これは単一のジェネリックパラメータ T を受け入れます。
_zod 内部プロパティには、いくつかの注目すべきプロパティが含まれています。
.def— チェックの 定義:これは、チェックを作成するためにクラスのコンストラクターに渡すオブジェクトです。チェックを完全に記述し、JSON シリアル化可能です。.def.check— チェックのタイプを表す文字列。例:"min_length","less_than","string_format"など。
.check()— チェックの検証ロジックが含まれています。
zod/v4/core は、いくつかの一般的な詳細化を実行する多数のサブクラスをエクスポートします。すべてのファーストパーティサブクラスは、z.$ZodChecks と呼ばれるユニオンとしてエクスポートされます。
._zod.def.check プロパティを使用して、これらのクラスを区別できます。
スキーマタイプと同様に、さまざまな 文字列形式 を実装する $ZodCheckStringFormat のサブクラスがいくつかあります。
異なる文字列形式チェックを区別するには、ネストされた switch を使用します。
これらの文字列形式の チェック の一部が、上記の文字列形式の タイプ と重複していることに気付くでしょう。これは、これらのクラスが $ZodCheck と $ZodType の両方のインターフェースを実装しているためです。つまり、チェックとしてもタイプとしても使用できます。これらの場合、解析中に ._zod.parse(スキーマパーサー)と ._zod.check(チェック検証)の両方が実行されます。実際には、インスタンスは独自の checks 配列の前に追加されます(ただし、._zod.def.checks には実際には存在しません)。
エラー (Errors)
Zod のすべてのエラーの基底クラスは $ZodError です。
パフォーマンス上の理由から、$ZodError は組み込みの Error クラスを継承 しません!したがって、instanceof Error を使用すると false が返されます。
zodパッケージは、いくつかの追加の便利なメソッドを持つZodErrorと呼ばれる$ZodErrorのサブクラスを実装しています。zod/miniサブパッケージは$ZodErrorを直接使用します。
イシュー (Issues)
issues プロパティは、$ZodIssue オブジェクトの配列に対応します。すべてのイシューは z.$ZodIssueBase インターフェースを拡張します。
Zod は、以下のイシューサブタイプを定義しています。
各タイプの詳細については、実装 を参照してください。

