Open6

JavaScript & TypeScriptでのバリデーションライブラリは何が良いの?

uuyu-guuyu-g

きっかけ

Formikではyupが使われるのは知っていたけれど、最近react-hooks-formを調べる中で知らないライブラリがあったので整理したい。

そもそもバリデーションライブラリをFormikでのバリデーションでしか使ったことがないのだけれど、他にはどんなときに使えるのか、使われているのかも整理したい。

またTypeScriptでDDDでの値オブジェクトを表現するのに使えたりしないか。

uuyu-guuyu-g

Yup

JavaScript

const schema = yup.object().shape({
  name: yup.string().required(),
  age: yup.number().required(),
});

Formikで対応しているライブラリとして有名。
スキーマからキャストもできたり

uuyu-guuyu-g

Superstruct

const schema = struct({
  name: string(),
  age: number(),
});

軽い(3.4kb)。他のライブラリがメソッドチェーンで設定していくのに対して、複数の関数を適用していく形式。
キャスト(強制)もできるみたい。