このプロジェクトについて

ZodはTypeScriptファーストの検証ライブラリです。スキーマを定義し、それでデータを解析すると、強く型付けされた検証済みの結果が得られます。Node.jsと最新のブラウザで動作し、外部依存関係がなく、コアバンドルは小さい(gzip圧縮で約2kb)です。APIはイミュータブルで、メソッドは既存のスキーマを変更するのではなく、新しいインスタンスを返します。TypeScriptまたはプレーンなJavaScriptから使用でき、組み込みのJSONスキーマ変換も含まれます。 基本的な使い方は、例えば文字列と数値のフィールドを持つオブジェクトのスキーマを定義することから始まります。スキーマで`.parse`を呼び出すと、入力を検証し、強く型付けされたディープクローンを返します。スキーマが非同期のリファインメントやトランスフォームを使用する場合は、代わりに`.parseAsync()`が必要です。検証が失敗すると、`.parse()`は`ZodError`をスローし、期待される型、エラーコード、問題のあるフィールドへのパス、メッセージなどの詳細な問題情報を含みます。try/catchを避けるには、`.safeParse()`が解析されたデータまたはエラーのいずれかを含む判別ユニオンを返します。`.safeParseAsync()`は非同期スキーマをカバーします。 型は`z.infer<>`を使用してスキーマから推論できます。入力型と出力型が`.transform()`などで分岐する場合、`z.input<>`と`z.output<>`でそれぞれ独立して抽出できます。 注目すべき機能は、事前コンパイルです。`z.compile(schema)`は、有効な入力に対してコンパイルされた高速パスを持つスキーマのクローンを返し、無効な入力は通常のパーサーにフォールバックするため、エラーレポートは同一のままです。READMEは、55スキーマのベンチマークで中央値2.4倍の高速化を報告しており、スキーマの複雑さに応じてスケールします(大きなオブジェクト配列と20キーのオブジェクトで約9倍、ネストされたオブジェクトで約4.5倍、一方、単純な文字列スキーマでは利点なし)。コンパイルは、スキーマを定義するモジュールの前に`zod/compile`をインポートすることでグローバルに有効にすることもできます。コンパイルは`new Function`を使用し、CSP環境などで`z.config({ jitless: true })`が設定されている場合、グローバルモードは自動的に無効になります。`z.compile()`を直接呼び出すことは明示的なオプトインです。非同期のリファインメントやトランスフォームを持つスキーマ、およびその他のいくつかの構造はコンパイルできません。その場合、`z.compile()`はスキーマを変更せずに返し、通常のパーサーを使用し続けます。ただし、`{ strict: true }`を渡して特定のエラーをスローすることはできます。無効な入力では、リファインメントとトランスフォームが2回実行される可能性があります。コンパイル済みスキーマから新しいスキーマを導出すると、コンパイルされていないスキーマが返されるため、最終的なスキーマをコンパイルする必要があります。 インストールは`npm install zod`です。プロジェクトはzod.devのドキュメント、Discordコミュニティ、ソーシャルチャンネルへのリンクを提供しています。MITライセンスです。