Was ist der JSON-zu-TypeScript-Konverter?
Der JSON-zu-TypeScript-Konverter liest einen Beispiel-JSON-Wert - eine API-Antwort, eine Konfigurationsdatei, einen Datenbankdatensatz - und schreibt die TypeScript-Schnittstellen, die ihn beschreiben Verschachtelte Objekte werden zu eigenen benannten Schnittstellen, Arrays von Objekten werden zu einer Einzelelementschnittstelle anstatt zu einer ausufernden Vereinigung zusammengeführt, und Schlüssel, die in einigen Datensätzen null sind oder fehlen, sind optional markiert Sie fügen Daten ein, die Sie bereits haben; Sie erhalten Typen, die Sie sonst handschreiben würden.
Eine API-Antwort von Hand einzugeben ist mühsam und fehleranfällig auf eine bestimmte Art und Weise: Sie geben ein, was Sie *denken* der Endpunkt zurückgibt, nicht das, was er zurückgegeben hat Felder, die Sie nie bemerkt haben, werden weggelassen, eine ganze Zahl, die manchmal null ist, wird als 10number` eingegeben, und der Fehler wird zur Laufzeit in der Produktion und nicht in Ihrem Editor angezeigt. Das Generieren von Typen direkt aus einer echten Nutzlast schließt diese Lücke, da die Form, gegen die Sie kompilieren, die Form ist, die der vom Server gesendete.
Alles läuft in Ihrem Browser Die Inferenz-Engine ist dependenzfreies TypeScript, kein Wrapper um einen Remote-Dienst, daher verlassen Nutzlasten - die routinemäßig Zugriffstoken, Kundendatensätze und interne IDs tragen - niemals die Seite Wählen Sie Schnittstellen oder geben Sie Aliase ein, schalten Sie das Schlüsselwort „`export` und die Modifikatoren „`only`" um, wählen Sie Ihre Einrückungsbreite aus, kopieren Sie dann die Ausgabe oder laden Sie eine „ts-Datei herunter.
Eine schnelle Möglichkeit zu sehen, was Ihnen die JSON-zu-TypeScript-Konvertierung liefert, ist das integrierte Sample Drücken Sie Sample laden und dann generieren Sie Sie erhalten drei JSON-zu-TypeScript-Schnittstellen: `Root`, `Owner` und `Release` Die zweite Version hat keinen 1incelnotes`-Schlüssel, daher liest die zusammengelegte `-Schnittstelle 10Release`?: string`, and `retiredAt` ist im einzigen Datensatz null, also wird daraus `At?: null`. Das ist das ehrliche Ergebnis, denn eine Null gibt keinen Beweis für den echten Typ. JSON in Typezu konvertieren in TypeScript für einen echten Endpunkt, fügen Sie mehrere Datensätze ein, fügen Sie mehrere Datensätze ein, damit die Inferenz mehr zum Vergleichen hat.
Die generierten Schnittstellen beschreiben das von Ihnen bereitgestellte Sample, nicht die von Ihnen aufgerufene API, und diese Unterscheidung ist das ganze Risiko Ein Feld, das zufällig in jedem Objekt Ihrer Probe vorhanden ist, wird auch dann als erforderlich markiert, wenn der Server es manchmal weglässt, und ein Feld, das in der Stichprobe null ist, kann nicht von einem immer nullten Feld unterschieden werden Leere Arrays sind der klarste Fall: Ein Array ohne Elemente gibt keine Auskunft darüber, was es enthält Die Array-Zusammenführung hilft hier, indem jedes Objekt in einer Liste in einer Schnittstelle zusammengefasst und Schlüssel markiert werden, die in einigen Einträgen fehlen, als optional, so dass ein größeres und vielfältigeres Sample einen ehrlicheren Typ erzeugt. Wo die API-Dokument oder OpenAPI-Dokument hat, generieren Sie stattdessen daraus ein undokumentieren Sie dieses für die Untersuchung einer Antwort verwenden.
Wie verwende ich den JSON-zu-TypeScript-Konverter?
Füge deinen JSON ein
Löschen Sie eine API-Antwort, eine Fixture-Datei oder einen JSON-Wert. Laden Sie zuerst das Beispiel, wenn Sie sehen möchten, wie verschachtelte Objekte, Arrays und NULL-Felder behandelt werden.
Benennen Sie den Wurzeltyp
Legen Sie den Namen des Root-Typs fest - normalerweise die Ressource, z. B. Benutzer oder Rechnung. Verschachtelte Schnittstellen werden automatisch aus ihrem Schlüssel benannt, wobei Array-Elementnamen singularisiert werden (Veröffentlichungen werden zu Release).
Wählen Sie Ihren Ausgabestil
Wählen Sie Schnittstelle oder Alias eingeben, entscheiden Sie, ob jede Deklaration exportiert werden soll, fügen Sie schreibgeschützte Modifikatoren hinzu, wenn Ihre Codebasis unveränderliche Formen bevorzugt, und setzen Sie den Einzug auf 2 oder 4 Leerzeichen.
Generieren, dann kopieren oder herunterladen
Drücken Sie Generieren. Überprüfen Sie die abgeleiteten Optionen und Gewerkschaften und kopieren Sie den Code in Ihre Zwischenablage oder laden Sie ihn als .ts-Datei herunter, die zum Ablegen in Ihrem Typenordner bereit ist.
Hauptmerkmale
Schachtelungsinterface-Extra
Jedes verschachtelte Objekt wird zu einer eigenen, wiederverwendbaren Schnittstelle anstelle einer anonymen inline-Form, sodass Sie die inneren Typen unabhängig importieren und referenzieren können.
Smart Array-Zusammenführung
Ein Array von Objekten wird zu einer Elementschnittstelle zusammengeführt. In einigen Datensätzen vorhandene Schlüssel, andere werden optional, so verhält sich genau das richtige Paginieren der API-Daten.
Nullbare Handhabung, die Sie steuern
Wählen Sie aus, ob ein Nullwert bedeutet, dass der Schlüssel optional ist oder ob NULL zur Union gehört. Beide Konventionen sind üblich, das Tool erzwingt Ihre Codebasis nicht.
Schnittstellen oder Typ-Aliase
Geben Sie "Interface User {}" oder "Type user = {}" an, um Ihren vorhandenen Flußregeln zu entsprechen, wobei optionale "Export" - und "ReadOnly" -Modifikatoren über jede Deklaration hinweg konsistent angewendet werden.
Frequently Asked Questions
Related Tools
JSON Flattener
Flatten nested JSON into single-level dot-notation keys, or unflatten dotted keys back into nested objects and arrays. Lossless round trip. 100% client-side.
JSON Schema Generator
Generate a JSON Schema from any JSON sample. Infers types, merges arrays of objects into one item schema, derives required fields, and detects date-time, email, uri, and uuid formats. Draft-07 and 2020-12 output. 100% client-side.
JSON to Go Struct
Convert JSON into Go struct definitions with json tags. Nested objects become inline structs, arrays of objects are merged, and field names follow Go conventions. Runs client-side.
JSONPath Tester
Test JSONPath expressions against any JSON and see the matched values and their paths instantly. Supports wildcards, recursive descent, slices, and filters. 100% client-side.
Comments
0 comments
No comments yet. Be the first to share your thoughts!