Zum Inhalt springen
100% lokal

TypeScript-Typ zu JSON Schema

Konvertiere ein TypeScript-Interface oder einen Type-Alias in JSON Schema.

Eingabe
Ausgabe

TypeScript-Typ zu JSON Schema

Füge ein TypeScript-Interface oder einen Type-Alias ein, und dieses Werkzeug generiert das entsprechende JSON Schema, bereit zur Validierung von API-Payloads, Konfigurationsdateien oder anderen JSON-Daten, die deinen Typ-Definitionen entsprechen müssen. Es ist für Entwickler gebaut, die ihre Datenstrukturen bereits in TypeScript beschreiben und ein Schema benötigen, ohne es manuell zu schreiben oder einen Build-Schritt einzurichten.

Wähle zwischen JSON Schema draft-07 und dem neueren 2020-12-Dialekt, da Validatoren und Tools immer noch unterschiedliche erwarten. String-Literal-Unions wie 'active' | 'inactive' können entweder als Enum oder als anyOf von const-Werten dargestellt werden, und du kannst Objekte zwingen, unbekannte Eigenschaften abzulehnen, Doc-Kommentare in Beschreibungsfelder umwandeln oder benannte Interfaces in einen $defs (oder definitions)-Block extrahieren, auf den $ref verweist, anstatt sie überall einzubinden.

Arrays, Tuples, Record- und Map-Typen sowie Unions mit Null werden so behandelt, wie TypeScript sie tatsächlich nutzt — ein nullable Feld wird zu einem Type-Array oder einem anyOf-Branch, nicht stillschweigend gelöscht. Konstrukte ohne JSON-Schema-Äquivalent, wie Methods, Function-Typen oder unaufgelöste generische Parameter, werden so permissiv wie möglich umgewandelt und unter dem Ergebnis als Warnungen aufgelistet, damit nichts stillschweigend fehlschlägt.

Alles läuft lokal in deinem Browser; deine Typ-Definitionen und das generierte Schema werden nie irgendwo hochgeladen. Kopiere das Ergebnis, lade es als .txt-Datei herunter, oder sende es direkt in eine andere Werkzeugeingabe, um weiter daran zu arbeiten.

Häufige Fragen

Welche Teile von TypeScript können konvertiert werden?
Interfaces, Type-Aliases, verschachtelte Objekt-Literale, Arrays, Tuples, Record/Map/Set, Date, Partial/Required/Pick/Omit und Unions inklusive String-Literal-Unions und null. Konstrukte ohne JSON-Schema-Äquivalent, wie Methods und Function-Typen, werden übersprungen und als Warnungen aufgelistet.
Was ist der Unterschied zwischen draft-07 und 2020-12?
Beide sind JSON-Schema-Dialekte. 2020-12 ist der aktuelle und nutzt $defs und prefixItems für Tuples, während draft-07 definitions und ein items-Array nutzt. Wähle je nachdem, welchen dein Validator erwartet.
Was passiert mit Eigenschaften, die mit '?' gekennzeichnet sind?
Sie werden aus dem required-Array des Schemas gelassen, sodass das generierte Schema TypeScripts eigene Idee widerspiegelt, welche Felder optional sind.
Warum enden einige Felder in einem leeren Schema {}?
Das passiert bei Konstrukten, die JSON Schema nicht ausdrücken kann, wie generische Type-Parameter oder ein Type, den das Werkzeug nicht auflösen konnte. Eine Warnung unter dem Ergebnis erklärt genau, welches Feld und warum.
Wird mein TypeScript-Code irgendwo hochgeladen?
Nein. Die Konvertierung erfolgt vollständig in deinem Browser — deine Typ-Definitionen und das generierte Schema verlassen dein Gerät nie.