TypeScript First なバリデーションライブラリのZod
というのを知ったので調べた
Zod
は「スキーマ」を定義しそれに基づいてバリデーションを行うライブラリ
特徴
- 依存関係ゼロ
- Node.jsとすべての最新のブラウザで動作する
- サイズが8kbでミニマイズして圧縮している
- イミュータブル
- 簡潔で連鎖可能なインターフェース
- 「Parse, don’t validate」への機能的アプローチ
- プレーンなJavaScriptでも動作する
Parse, don’t validateとは
「Parse, don’t validate」 とは以下のAlexis King氏のブログで紹介されたアプローチで、構造化されていないデータを構造化する(parse
)
validateは値が正しいかを検証するにとどまるため、外部のデータはちゃんとparse
をしようというもの
このときparse
できない場合は例外をthrowする
zodもこれを機能として提供する
サンプル
基本的な使い方は以下
import { z } from "zod"; const User = z.object({ username: z.string(), }); User.parse({ username: "Ludwig" }); // extract the inferred type type User = z.infer<typeof User>; // { username: string }
他にも機能が充実していて、かなり良さそう
他参考
https://zenn.dev/uttk/articles/bd264fa884e026