OSS探訪GitHubでログイン

スキーマから入力値を変換・実行時検証し、TypeScript型も推論する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
23,660
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/02
ページ内ナビ

概要

Yupは、object・string・number・arrayなどのschemaを組み合わせ、入力値の変換と実行時検証を行うlibraryです。schemaからInferTypeでTypeScript型を取り出せるため、form、API response、設定値などの実データと静的型を同じ定義へ寄せられます。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

transformとtestを組み合わせて入力値を整形・検証する

Yupのschemaは、入力を目的の型へ変換するtransformと、値が条件を満たすか確認するtestで構成されます。例えば文字列の数値をnumberへ変換してから、positiveやintegerなどの条件を検証できます。

出典:[1]

object schemaからTypeScript型をInferTypeで取り出す

object schemaへfield定義を集約し、InferType<typeof schema>から静的なTypeScript型を生成できます。runtimeの検証条件とapplication側の型を別々に手書きする重複を減らせます。

出典:[1]

非同期testやStandard Schema対応を利用する

custom testは非同期処理にも対応し、server側確認を含むvalidationを構成できます。またCHANGELOGでは1.7.0でStandard Schema interface対応が追加されています。

出典:[1][3]

向いている用途

form・API入力・設定値を実行時に確かめたいfrontendに向く

TypeScriptの型だけでは保証できないuser input、network response、query parameterなどを実行時に検証し、同時にapplication内で使う型を推論したい場面に適します。

出典:[1]

導入前の確認

validateは既定でtransformを実行するためraw値との差を確認する

Yupはvalidation前にschemaのtransformを適用できます。文字列"24"をnumberへcastするような変換が入るため、入力値を変えずに検証したい場合はstrict: trueを指定してparsingを無効にする必要があります。

出典:[1]

1.7.1はCHANGELOG上で内容のないpatch entryとして記録されている

reviewed commitのpackage versionは1.7.1で、CHANGELOGにも1.7.1が記録されていますが、そのentry自体には追加機能や修正内容が列挙されていません。主要機能の説明はREADMEと1.7.0までの変更内容を基準にしています。

出典:[2][3]

参考にした公式資料

  1. [1]Yup README at reviewed commit(2026-10-05)
  2. [2]Yup package metadata at reviewed commit(2026-10-05)
  3. [3]Yup CHANGELOG at reviewed commit(2026-10-05)
  4. [4]Yup MIT license(2026-10-05)
編集部からの補足

Yupは検証だけでなく入力値の変換も行えます。API入力やform値をそのまま保持したい箇所では、castとvalidateの変換挙動を確認し、必要ならstrict: trueを使って境界を明確にしてください。

3ステップで試す

  1. 1

    Yup 1.7.1を一時projectへ導入する

    reviewed package versionを固定し、他のproject設定に影響しない一時directoryへ導入します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/yup.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact yup@1.7.1
  2. 2

    変換と検証を行うschemaを作る

    READMEのschema構成に沿い、文字列のageをnumberへ変換しながらrequired・positive・integerを検証します。

    printf "%s\n" "import {object, string, number} from 'yup';" "const UserSchema = object({name: string().required(), age: number().required().positive().integer()});" "const user = UserSchema.validateSync({name: 'Ada', age: '37'});" "console.log(user);" > demo.mjs
  3. 3

    Node.jsでschemaを実行する

    runtimeでvalidationとtransformが実行され、検証済みvalueが返ることを確認します。

    node demo.mjs
公式READMEで確認

成長

成長の推移 · 直近30日

23,660 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
91

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
23,660
Forks
948
Watchers
76
Open Issues
164
Contributors
149
所有者種別
User
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/10/02

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?