TypeScript 型定義から JSON Schema 生成ツール (Draft-07 & 2020-12)
TypeScriptスキーマコンパイラ

TypeScript 型定義から JSON Schema 生成ツール (Draft-07 & 2020-12)

TypeScriptのinterface、typeエイリアス、JSDocコメントを、APIコントラクトやフォームビルダー向けの標準JSON Schema定義へ自動変換します。

Draft-07 & 2020-12 準拠
サーバー送信ゼロ
プリセット:
ドラフト規格:
ルート型:
定義キー名:
追加プロパティ許容:
インデント:
TypeScript 型定義コード0 型定義数
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EmptySchema",
  "type": "object",
  "properties": {}
}
検出された型定義
0AST解析完了
スキーマ規格
Draft 2020-12$defs
検証ルール & 制約
0件のルールを合成

100% クライアントサイドAST解析

ブラウザ内ローカル環境で構文木解析とスキーマ変換を高速実行。外部サーバーへの通信やデータ漏洩の心配は一切ありません。

Draft-07 & 2020-12 完全準拠

$defs/definitionsの自動リンク、タプルのprefixItems、enum展開、厳格な型判定など業界標準のJSON Schema仕様に完全準拠。

JSDocとスマート制約推論

コード内の@description、@minimum、@maximum、@format、@pattern、@defaultを自動抽出し、OpenAPI級の高品質なスキーマを出力。

技術リファレンス&アーキテクチャガイド

TypeScript インターフェース to JSON Schema (Draft-07 & 2020-12) — リファレンスガイド

TypeScriptのinterface、typeエイリアス、JSDocコメントを、APIコントラクトやフォームビルダー向けの標準JSON Schema定義へ自動変換します。

主要パラメータ&設定項目

targetDraftstring

変換対象のJSON Schema仕様ダイアレクト('draft-07', '2020-12', 'draft-04')。

初期値: draft-07
strictNullChecksboolean

厳格なnull許容値の判定を有効化し、T | null や T | undefined を type 配列または anyOf 句として正確にマッピングします。

初期値: true
topRefboolean

生成されるJSON Schemaのルートに $defs または definitions を参照する $ref を生成します。

初期値: true
additionalPropertiesboolean

明示的に宣言されていないプロパティを拒否するため、オブジェクトスキーマに 'additionalProperties: false' を付与するかどうかを指定します。

初期値: false
extractCommentsboolean

JSDocコメントを解析し、検証タグ(@minimum, @maximum, @format, @patternなど)をスキーマの制約キーワードへ直接マッピングします。

初期値: true

プロの活用テクニック&推奨設定

JSDocアノテーションによる制約の自動付与

TypeScriptのinterface定義内で @minimum 1、@maximum 100、@pattern ^[a-z]+$、@format email などのJSDocタグを記述することで、外部デコレータを使わずに詳細なJSON Schemaバリデーション制約を生成できます。

Draft-07 と Draft 2020-12 における定義キーワードの違い

Draft-07では共通のサブインターフェースは 'definitions' に格納されますが、Draft 2020-12では '$defs' に標準化されています。後段のバリデータ(Node.jsのAjv v8やPythonのjsonschemaなど)がサポートするバージョンに合わせて選択してください。

一般的なTypeScriptのUnion型

一般的なTypeScriptのUnion型(A | B)は anyOf に変換されますが、特定の識別子リテラルを持つ判別可能なUnion型は、曖昧さのないバリデーションを実現するため oneOf と const / enum に正確にマッピングされます。

よくあるトラブルと解決策

再帰的・循環型の参照によるスタックオーバーフロー

自身を参照する再帰的interfaceや親子階層型を展開する際は、'topRef' と定義再利用モードを有効にし、再帰プロパティがインライン展開ではなく '#/$defs/TreeNode' や '#/definitions/TreeNode' のポインタを参照するように設定してください。

高度なユーティリティ型(Omit, Pick, Partial)の解析エラー

動的な条件付き型に依存するのではなく、ユーティリティ型を事前に具体的なinterfaceへ正規化するか、中間型(Intermediate Types)を明示的に定義してAST抽出を安定化させてください。

よくある質問 (FAQ)

オプショナルプロパティ(prop?: string)はどのように処理されますか?▼

TypeScriptではオプショナルプロパティは省略可能なフィールドを表します。JSON Schemaでは明示的に 'required' 配列に含まれない限り省略可能です。strictNullChecks が有効な場合、'prop?: string' は 'required' から除外され、'prop: string | null' は 'required' に含まれた上で type が ['string', 'null'] となります。

どのJSDocタグがJSON Schemaのバリデーションキーワードに変換されますか?▼

通常のJSDocテキストは 'description' キーワードに変換されます。加えて、@minimum、@maximum、@minLength、@maxLength、@pattern、@format(email, uri, date-time, uuid 等)、@default、@deprecated などのタグが標準の検証制約として抽出されます。

Draft-07 と Draft 2020-12 の出力における主な違いは何ですか?▼

Draft-07は再利用スキーマに 'definitions' を使用し、タプル検証に配列形式の 'items' を使用します。Draft 2020-12では '$defs' を採用し、タプルには 'prefixItems' が使われ、OpenAPI 3.1 や最新のJSON Schemaエコシステムとの完全な互換性を持ちます。

1つのTypeScriptファイル内にある複数のinterfaceを同時に変換できますか?▼

はい、ルートとなるメインのinterfaceを指定することで、参照されているすべてのサブ型や依存interfaceが '$defs' または 'definitions' 内に体系的に抽出され、相対 $ref で自動リンクされます。

関連するおすすめ開発ツール

すべてのツール →
Kubernetes Deployment YAML 生成&マニフェストビルダー開発ツール

レプリカ数、リソース制限(requests/limits)、ヘルスチェック(Liveness/Readinessプローブ)、ローリングアップデート戦略を備えた本番仕様の Kubernetes Deployment YAML マニフェストを即座に生成します。

ツールを開く→
Kubernetes Ingress YAML ジェネレーター (Nginx, Traefik & ALB ルール)開発ツール

Kubernetes Ingressリソース生成ガイド。Nginx、Traefik、HAProxy向けTLS終端、パスルーティングおよびアノテーション設定。

ツールを開く→
Traefik v3 動的構成ファイルジェネレーター開発ツール

Traefik v2およびv3の動的ルーティング、ミドルウェアチェーン、TLS構成を生成するための実務仕様リファレンスガイド。

ツールを開く→
Caddyfile Generator開発ツール

本番環境向けCaddy Webサーバー設定を迅速に生成・検証するための開発者向け技術リファレンス。

ツールを開く→
Brotli & Gzip 圧縮ベンチマーク&帯域節約シミュレーター開発ツール

ブラウザネイティブのCompressionStreamを活用し、テキスト、CSS、JavaScriptバンドルのBrotliおよびGzip圧縮率を測定。モバイル3G/4G環境での読み込み時間短縮と帯域節約効果を即座に試算します。

ツールを開く→
Protobuf .proto から TypeScript インターフェース&列挙型変換ガイド開発ツール

Protocol Buffers(proto2 および proto3)のメッセージ定義、列挙型(enum)、ネストされたフィールドを解析し、クリーンな TypeScript インターフェースに変換します。

ツールを開く→