ページ内ナビ
概要
Runtypesは、primitive・array・tuple・object・union・intersectionなどを組み合わせて実行時の型検証を行うlibraryです。check、guard、assertで入力を検証し、同じruntypeからStaticでTypeScript型を取り出せます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
Object・Union・Tupleなどを組み合わせてruntime typeを作る
Object、Array、Tuple、Union、Intersectなどのvalidatorを組み合わせ、外部JSONやAPI responseの形を実行時に確認できます。複雑なdomain modelも小さなruntypeから再利用して構成できます。
出典:[1]
check・guard・assertを用途に応じて使い分ける
checkは不正値でValidationErrorを投げ、guardはbooleanのtype guardとして使えます。assertはTypeScript assertion functionとして、検証後の変数を安全な型へ絞り込みます。
出典:[1]
Staticとconformでruntime定義と静的型を揃える
Static<typeof Runtype>でruntypeから静的型を推論できます。既存の型定義に合わせたい場合は.conform<T>()でruntypeの形が指定型へ適合しているかcompile時に確認できます。
出典:[1]
向いている用途
API responseや設定値をTypeScriptの型と同じ場所で検証したい場合に向く
network、storage、設定fileなどから来るunknown値を実行時に確認しつつ、同じ定義をapplication内部のTypeScript型にも使いたいprojectに適します。
出典:[1]
導入前の確認
checkとparseでは値の扱いが異なる
READMEはcheckなどのvalidation methodとparseを区別しています。parseはparserやdefaultを適用し、Objectでは指定propertyだけの新しいobjectを返す一方、checkは元の値を返します。変換の有無を意識して入口を選んでください。
出典:[1]
optional propertyはexactOptionalPropertyTypes前提の意味になる
RuntypesはruntimeではexactOptionalPropertyTypes: true相当の意味でoptional propertyを扱います。READMEもこのcompiler optionを無効にしないことを強く推奨しており、無効なprojectでは静的型とruntime behaviorがずれる可能性があります。
出典:[1]
参考にした公式資料
- [1]Runtypes v7.0.5 README(2026-10-05)
- [2]Runtypes v7.0.5 release(2026-10-05)
- [3]Runtypes MIT license(2026-10-05)
編集部からの補足
check()は検証済みの元の値を返し、parse()はparserやdefaultを適用した新しい値を返します。Objectでは追加propertyの扱いも異なるため、単純なvalidationと変換を同じものとして扱わないのが重要です。
3ステップで試す
- 1
Runtypes 7.0.5を一時projectへ導入する
review対象releaseを固定し、既存projectへ影響しない一時directoryへ導入します。
demo=$(mktemp -d "${TMPDIR:-/tmp}/runtypes.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact runtypes@7.0.5 - 2
Object runtypeで正しい値と不正な値を検証するscriptを作る
READMEの
Objectとcheckの流れに沿い、正しいobjectは通し、型が違う入力はValidationErrorで拒否されることを確認します。printf "%s\n" "import {Object, Number, String} from 'runtypes';" "const User = Object({id: Number, name: String});" "const user = User.check({id: 1, name: 'Ada'});" "let rejected = false;" "try { User.check({id: '1', name: 'Ada'}); } catch { rejected = true; }" "if (!rejected) process.exit(1);" "console.log(user);" > demo.mjs - 3
Node.jsでruntime validationを実行する
有効な値を取得でき、不正な値が拒否されることを確認します。
node demo.mjs
成長
成長の推移 · 直近30日
2,699 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 1
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
GitHubのデータGitHubの詳細データを見る
GitHub Topics
- typescript
- runtime
- types
- validation
- Stars
- 2,699
- Forks
- 90
- Watchers
- 10
- Open Issues
- 24
- Contributors
- 40
- 所有者種別
- Organization
- 主要言語
- TypeScript
- ライセンス
- MIT
- リポジトリ最終更新
- 2026/08/14
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Ajv14,850 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
JSON SchemaやJTDをcompileし、API入力や設定値を高速に実行時検証する
TypeScript - openapi-typescript8,391 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
OpenAPI 3.0/3.1の定義から実行時コードを増やさずTypeScript型を生成する
TypeScript - Typia5,931 Stars
共通タグ 4件 · 共通カテゴリ 2件 · 同じ言語
TypeScript型をcompile時に専用validatorへ変換し、runtime validationやserializerを生成する
TypeScript - Valibot9,027 Stars
共通タグ 4件 · 共通カテゴリ 1件 · 同じ言語
小さな関数を組み合わせ、TypeScript型推論と実行時のスキーマ検証を両立する
TypeScript - SWR32,487 Stars
共通タグ 3件 · 共通カテゴリ 2件 · 同じ言語
Reactのリモートデータ取得をキャッシュし、再検証と重複排除までHookで管理する
TypeScript - Storybook91,200 Stars
共通タグ 3件 · 共通カテゴリ 1件 · 同じ言語
UI状態をstoryとして保存し、Docs・interaction test・AI toolへ再利用するfrontend workshop
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。