TypeScript Interface zu JSON Schema Generator (Draft-07 & 2020-12)
TypeScript-Schema-Compiler

TypeScript Interface zu JSON Schema Generator (Draft-07 & 2020-12)

Konvertieren Sie TypeScript-Interfaces, Type-Aliase und JSDoc-Kommentare nahtlos in standardkonforme JSON-Schema-Definitionen für API-Verträge und Formular-Validierungen.

Draft-07 & 2020-12 Konformität
Null Serverübertragung
Voreinstellungen:
Draft Version:
Root-Typ:
Definitionen-Schlüssel:
Zusätzliche Eigenschaften:
Einrückung:
TypeScript Interfaces & Types0 Typen
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EmptySchema",
  "type": "object",
  "properties": {}
}
Interfaces & Typen
0AST analysiert
JSON Schema Version
Draft 2020-12$defs
Eigenschaften & Regeln
0Regeln synthetisiert

100% Client-Side AST-Parsing

TypeScript-Syntaxanalyse und Schemagenerierung laufen vollständig lokal in Ihrer Browser-Sandbox ohne Serverübertragung.

Draft-07 & 2020-12 Konformität

Vollständige Unterstützung für $defs/definitions, Tupel-prefixItems, strikte Typisierung und Enums nach JSON-Schema-Standard.

JSDoc & Intelligente Einschränkungen

Extrahiert @description, @minimum, @maximum, @format, @pattern und @default direkt aus Kommentaren für OpenAPI-fähige Schemas.

Technische Referenz & Architektur-Leitfaden

TypeScript-Interface zu JSON Schema Generator (Draft-07 & 2020-12) — Referenz-Leitfaden

Konvertieren Sie TypeScript-Interfaces, Type-Aliase und JSDoc-Kommentare nahtlos in standardkonforme JSON-Schema-Definitionen für API-Verträge und Formular-Validierungen.

Wichtige Parameter & Steuerelemente

targetDraftstring

Ziel-Dialekt der JSON-Schema-Spezifikation ('draft-07', '2020-12' oder 'draft-04').

Standard: draft-07
strictNullChecksboolean

Aktiviert strikte Nullable-Prüfungen und unterscheidet T | null und T | undefined präzise via Typ-Array oder anyOf.

Standard: true
topRefboolean

Erzeugt eine $ref-Referenz auf oberster Ebene, die auf die Hauptdefinition in $defs oder definitions verweist.

Standard: true
additionalPropertiesboolean

Legt fest, ob nicht deklarierte Eigenschaften über 'additionalProperties: false' in Objektschemata verboten werden.

Standard: false
extractCommentsboolean

Liest JSDoc-Kommentare aus und überträgt Validierungs-Tags (@minimum, @maximum, @format, @pattern) direkt in Schema-Einschränkungen.

Standard: true

Profi-Tipps & Best Practices

Nutzen Sie Standard-JSDoc-Tags wie

Nutzen Sie Standard-JSDoc-Tags wie @minimum 1, @maximum 100, @pattern ^[a-z]+$ und @format email direkt in TypeScript-Interfaces, um semantisch reichhaltige JSON-Schemas ohne externe Decorator-Bibliotheken zu generieren.

Draft-07 speichert wiederverwendbare

Draft-07 speichert wiederverwendbare Schnittstellen unter 'definitions', während Draft 2020-12 den Standard '$defs' verwendet. Stellen Sie sicher, dass Ihr nachgelagerter Validator (z. B. Ajv v8 oder Python jsonschema) dem gewählten Dialekt entspricht.

Union-Types vs. Diskriminierte Unions

Standard-Union-Typen (A | B) erzeugen ein anyOf-Konstrukt, während diskriminierte Unions mit gemeinsamen Literal-Tags sauber auf oneOf mit const- bzw. enum-Diskriminatoren abgebildet werden.

Häufige Fallstricke & Fehlerbehebung

Rekursive Schnittstellen und zirkuläre Typ-Referenzen

Aktivieren Sie 'topRef' und die Definitionswiederverwendung, sodass rekursive Felder auf Zeiger wie '#/$defs/TreeNode' oder '#/definitions/TreeNode' verweisen, anstatt inline dupliziert zu werden.

Komplexe Utility-Types (Omit, Pick, Mapped Types) werden leer exportiert

Vereinfachen oder normalisieren Sie komplexe Utility-Typen vorab in konkrete Interfaces oder deklarieren Sie Zwischen-Typen, um eine vollständige AST-Extraktion zu gewährleisten.

Häufig gestellte Fragen (FAQ)

Wie werden optionale Eigenschaften (prop?: string) abgebildet?▼

In TypeScript sind Felder mit Fragezeichen optional. In JSON Schema sind Eigenschaften standardmäßig optional, sofern sie nicht im Array 'required' aufgeführt sind. Bei aktiviertem strictNullChecks wird 'prop?: string' aus 'required' ausgeschlossen, während 'prop: string | null' in 'required' verbleibt, aber den Typ ['string', 'null'] erhält.

Welche JSDoc-Tags werden in JSON-Schema-Validierungsregeln übersetzt?▼

Allgemeine JSDoc-Beschreibungen werden in das Schlüsselwort 'description' übernommen. Spezifische Tags wie @minimum, @maximum, @minLength, @maxLength, @pattern, @format (z. B. email, uri, date-time, uuid), @default und @deprecated werden direkt in Validierungs-Constraints übersetzt.

Was ist der fundamentale Unterschied zwischen Draft-07 und Draft 2020-12?▼

Draft-07 verwendet 'definitions' für wiederverwendbare Schemas und Arrays für Tupel ('items'). Draft 2020-12 verwendet '$defs', führt 'prefixItems' für Tupel ein und ist vollständig kompatibel mit modernen Standards wie OpenAPI 3.1.

Können mehrere Schnittstellen aus einer einzigen Datei generiert werden?▼

Ja. Durch die Angabe des Haupt-Interface-Namens werden alle referenzierten Typen und verschachtelten Interfaces modular unter '$defs' oder 'definitions' extrahiert und über relative $ref-URIs verknüpft.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →