Typgenerierung

JSON zu TypeScriptTypen aus den Unterschieden Ihrer Daten

Vergleichen Sie das fehlende tag und den null-Wert von score im Beispiel. Für einen ausdrücklichen Vertrag gibt es den Schema-Modus.

JSON zu TypeScript

JSON-Eingabe

Analyse und Generierung erfolgen in diesem Browser. Eingaben werden weder hochgeladen noch gespeichert.

TypeScript-Ergebnis

Generierungsoptionen

Fehlende Felder werden optional; null bleibt null. Leere Arrays werden unknown[]. Nutzen Sie strictNullChecks im Projekt.

3 Deklarationen · 1 optionale Eigenschaften

JSON zu TypeScript unterstützt den Einstieg in ein API-Modell. Eine einzelne erfolgreiche Antwort zeigt oft nicht, welche Felder später fehlen. Fassen Sie mehrere typische Datensätze in einem Array zusammen, bevor Sie die Deklarationen übernehmen.

Wenn Sie JSON in TypeScript umwandeln, bleibt eine Prüfung gegen die API-Dokumentation nötig. Fehlende Eigenschaften und vorhandene null-Werte sind unterschiedliche Aussagen; unbekannte Varianten kann auch die Typinferenz nicht aus einem Beispiel rekonstruieren.

Warum JSON zu TypeScript hier nutzen?

Alle Datensätze gemeinsam betrachten

JSON zu TypeScript wertet sämtliche Array-Elemente aus. Fehlt tag in einem Objekt, wird es optional. Enthält score Zahlen und null, entsteht eine Union. So lassen sich fehlende Felder und leere Werte im Ergebnis getrennt prüfen.

Zwei Datensätze werden zu einem Typ zusammengeführt; eine gestrichelte Markierung zeigt ein fehlendes Feld, eine hohle Markierung null.

Verträge ergänzen fehlende Beispiele

Ein Schema kann Pflichtfelder und erlaubte Enum-Werte festlegen, die im Beispiel nicht erkennbar sind. Wählen Sie den Eingabemodus ausdrücklich. Nicht unterstützte Aussagen führen zu einem Fehler mit Pfad, statt unbemerkt aus der Deklaration zu verschwinden.

Beispieldaten und ein Strukturvertrag führen über getrennte Wege zu Karten mit Typdeklarationen.

Vor dem Export gezielt prüfen

01

Varianten an derselben Stelle bündeln

Mehrere Datensätze gehören in ein gültiges JSON-Array. Objekte werden an derselben Strukturposition verglichen. Gleichnamige Eigenschaften an anderen Stellen werden dadurch nicht automatisch zu einem gemeinsamen Modell.

02

Modus wählen, dann Beispiel laden

Ein Moduswechsel behält die Eingabe. Beispiel lädt passende Daten für den gewählten Modus. Im Schema bestimmt required die Pflichtfelder; der Schalter für ausschließlich optionale Felder gilt nur für Beispieldaten.

03

Änderungen erneut berechnen lassen

Die Automatik wartet nach Änderungen 350 ms. Ausschalten zeigt die Schaltfläche zum Generieren; Ctrl/Cmd+Enter funktioniert ebenfalls. Jede Änderung sperrt den Export, bis eine aktuelle Berechnung erfolgreich ist. Root ist der Ausgangspunkt für abgeleitete Namen.

Aus Werten werden Deklarationen

Typinferenz über vollständige Arrays

Zahlen und Zeichenketten an gleicher Stelle bilden eine Union. Auch verschachtelte Arrays werden gemeinsam ausgewertet. Leere Arrays übernehmen vorhandene Hinweise anderer Arrays an gleicher Position; ohne Elemente bleibt unknown[]. Feste Tupellängen werden nicht erzeugt.

Optional und null bleiben getrennt

Fehlt eine Eigenschaft in einigen Objekten, erhält sie ?. Ein vorhandener null-Wert bleibt null oder Teil einer Union. Aus null allein wird kein string oder number erraten. Aktivieren Sie strictNullChecks im Projekt, damit die Unterscheidung bei der Typprüfung greift.

TypeScript-Interfaces generieren und benennen

Der Stammname ist Root. Namen verschachtelter Deklarationen entstehen aus den übergeordneten Feldern; Kollisionen erhalten stabile Zahlensuffixe. Eigenschaftsnamen bleiben erhalten und werden bei Bedarf in Anführungszeichen gesetzt. Der Stammname muss ein ASCII-Bezeichner mit höchstens 64 Zeichen ohne reserviertes Wort sein.

Begrenzte Schema-Unterstützung

Unterstützt werden boolesche Schemas, type, properties, required, einzelne items-Schemas, boolesches additionalProperties und skalare enum/const-Werte. anyOf erlaubt nur Anmerkungen als Geschwister. Wählen Sie interface oder type, export und zwei oder vier Leerzeichen. integer wird als number ausgegeben.

Wo die Schlussfolgerungen enden

Beispiele beschreiben nicht die gesamte API
Nur gelieferte Werte fließen ein. Das Zusammenführen nach Feldern verliert Zusammenhänge zwischen Diskriminatoren und anderen Eigenschaften. Datumsangaben und UUIDs bleiben string; Enum-Mengen werden aus Beispielen nicht geraten. Weitere Varianten müssen Sie ergänzen.
Keine Prüfung zur Laufzeit
Die Ausgabe enthält keine Parser, Klassen, Zod-Schemas oder Serialisierer. Statische Typen prüfen keine empfangenen Werte. additionalProperties=false entfernt die Indexsignatur, garantiert aber keine exakten Objekte zur Laufzeit. number erzwingt weder Ganzzahlen noch sichere Präzision.
Nicht unterstützte Schema-Aussagen stoppen
Referenzen, Definitionen, oneOf/allOf, Bedingungen, format, Muster, Längen, Wertebereiche und Tupel werden abgelehnt. Objekt- und Array-Schlüsselwörter benötigen einen ausdrücklichen passenden type. Schemas als additionalProperties und zusammengesetzte Enum-Werte sind ausgeschlossen; zu große Zahlenliterale ebenfalls.
Eine strikte JSON-Eingabe
Kommentare, abschließende Kommata, doppelte Schlüssel und JSONL sind ungültig. Syntaxfehler zeigen Zeile und Spalte. Es gibt keine Reparatur, URL-Abfrage, Dateiimporte oder Stapelverarbeitung. Eine Eigenschaft namens type aktiviert nicht automatisch den Schema-Modus.
Grenzen verhindern unvollständigen Code
Maximal 500.000 Eingabezeichen, Tiefe 100 und 50.000 Knoten; die Ausgabe ist auf 1.000.000 Zeichen und 1.000 Deklarationen begrenzt. Bei Überschreitung wird nicht exportiert. Leere Objekte ohne Feldhinweise erhalten eine unknown-Indexsignatur statt des zu allgemeinen Typs {}.

Fragen zu JSON zu TypeScript

Sollte ich type oder interface für JSON-Daten verwenden?

Richten Sie sich nach der Konvention Ihres Projekts. interface gilt hier für Objektdeklarationen. Ein Array, primitiver Wert oder Unionstyp an der Wurzel benötigt unabhängig davon einen type-Alias.

Werden Datumsangaben oder Enums erkannt?

Datumsähnliche Zeichenketten bleiben string. Beispielwerte werden nicht als vollständige Enum-Menge interpretiert. Mit einem unterstützten Schema können Sie erlaubte skalare Werte ausdrücklich durch enum oder const angeben.

Wie bekomme ich die erzeugten Typen in VSCode?

Erzeugen Sie die Deklarationen, kopieren Sie sie in eine TypeScript-Datei oder öffnen Sie die heruntergeladene .ts-Datei. Dieses Werkzeug installiert keine Editor-Erweiterung. Prüfen Sie Namen und Importe im Zielprojekt.

Wie werden verschachtelte Objekte konvertiert?

Sie erhalten eigene Deklarationen, deren Namen vom Stamm und dem enthaltenden Feld abgeleitet werden. JSON zu TypeScript ergänzt bei Namenskollisionen Zahlen. Eigenschaften werden dabei nicht umbenannt.

Was passiert mit null oder gemischten Werten?

Verschiedene beobachtete Werttypen bilden Unions. Eine Zahl und null ergeben number | null. Eine nur fehlende Eigenschaft ist dagegen optional. Bei ausschließlich leeren Arrays bleibt der Elementtyp unknown.

Ein auffälliges Ergebnis gefunden?

Mit mehreren Antworten beginnen

Mit JSON zu TypeScript können Sie mehrere Antwortvarianten vergleichen, optionale Felder prüfen und die Deklarationen anschließend im Projekt weiterbearbeiten.