UTILS.
Privat von Anfang an
📘

JSON Schema zu TypeScript

Kompilieren Sie ein JSON Schema (draft-07 oder 2020-12) zu TypeScript-Interfaces und Typ-Aliassen und behandeln Sie required, enums, $ref, Arrays und Kombinatoren.

Deine Dateien bleiben auf diesem Gerät

Dateien werden im Browser verarbeitet, nie hochgeladen. Die Website lädt den benötigten Code und die Ressourcen herunter. Ohne Konto und Tracker.

Speichere dieses Tool über Herunterladen als einzelne HTML-Datei zur Offline-Nutzung.

Datenschutz →
Ausgabe

Über dieses Tool

Das Tool JSON Schema zu TypeScript kompiliert ein JSON-Schema-Dokument zu TypeScript-Interfaces und Typ-Aliassen und tut damit das, was die beliebte Bibliothek json-schema-to-typescript tut, ohne eine Toolchain zu installieren. Anders als die JSON-Beispiel-Konverter liest dieser ein echtes Schema: Er durchläuft das Schema-Objekt und verwandelt type:'object' in ein Interface, in dem die in required aufgeführten Schlüssel nicht-optional sind und der Rest mit ? markiert wird.

Alles wird lokal in Ihrem Browser mit JSON.parse und reinem JavaScript geparst und erzeugt, sodass Ihr Schema die Seite nie verlässt. String-Schemas mit einem enum werden zu einer Union von String-Literalen; einfache string-, number/integer-, boolean- und null-Typen werden auf ihre TypeScript-Äquivalente abgebildet; Arrays werden zu T[] (ein Tupel, wenn items ein Array ist). Kombinatoren werden unterstützt — allOf wird zu einer Schnittmenge (A & B) und anyOf / oneOf werden zu Unions (A | B) — und ein nullbarer type:[T,'null'] wird zu T | null.

Referenzen werden nach Namen aufgelöst: $ref, das auf #/definitions/X oder #/$defs/X zeigt, gibt eine benannte Typreferenz aus, und jede Definition wird als eigenes export interface oder export type erzeugt. additionalProperties fügt eine Indexsignatur [key: string]: T hinzu. Der Root-Typname fällt auf den title oder $id des Schemas zurück. Schalten Sie zwischen Interface- und Type-Ausgabe um sowie, ob Schema-description-Strings zu JSDoc-Kommentaren /** */ werden. Kopieren Sie das Ergebnis oder laden Sie eine .ts-Datei herunter.

Häufig gestellte Fragen

Welche JSON-Schema-Funktionen werden unterstützt?
object mit properties und required, string-enums als Literal-Unions, number/integer/boolean/null, Arrays (einschließlich Tupel), allOf/anyOf/oneOf-Kombinatoren, $ref auf definitions oder $defs, additionalProperties als Indexsignatur und nullbare Typ-Arrays wie ["string","null"].
Wie werden $ref und definitions behandelt?
Ein $ref wie #/definitions/Address (oder #/$defs/Address) wird zu einer Referenz auf einen benannten Typ Address, und jeder Eintrag unter definitions oder $defs wird als eigenes export interface oder export type ausgegeben, sodass die Referenzen innerhalb der Ausgabe aufgelöst werden.
Was benennt den Root-Typ?
Das Root-Namen-Feld, falls Sie es setzen, andernfalls der title des Schemas, andernfalls das letzte Segment seiner $id, andernfalls Root. Definitionsnamen stammen aus ihrem Schlüssel in definitions oder $defs, umgewandelt in PascalCase.
Kann ich die Schema-Beschreibungen behalten?
Ja. Mit aktiviertem JSDoc (Standard) wird jeder description-String am Schema oder an einer Eigenschaft als /** ... */-Kommentar über dem entsprechenden Typ oder Feld ausgegeben und bewahrt so die Dokumentation im erzeugten TypeScript.

Weitere Tools