Open6
JavaScript & TypeScriptでのバリデーションライブラリは何が良いの?
きっかけ
Formikではyupが使われるのは知っていたけれど、最近react-hooks-formを調べる中で知らないライブラリがあったので整理したい。
そもそもバリデーションライブラリをFormikでのバリデーションでしか使ったことがないのだけれど、他にはどんなときに使えるのか、使われているのかも整理したい。
またTypeScriptでDDDでの値オブジェクトを表現するのに使えたりしないか。
Yup
JavaScript
const schema = yup.object().shape({
name: yup.string().required(),
age: yup.number().required(),
});
Formikで対応しているライブラリとして有名。
スキーマからキャストもできたり
Zod
const schema = z.object({
username: z.string(),
});
Superstruct
const schema = struct({
name: string(),
age: number(),
});
軽い(3.4kb)。他のライブラリがメソッドチェーンで設定していくのに対して、複数の関数を適用していく形式。
キャスト(強制)もできるみたい。
Joi
const schema = Joi.object({
username: Joi.string().required(),
});