onlinetools.dev

JSON → TypeScript-Typen

TypeScript-Interfaces sofort aus einem JSON-Beispiel ableiten

Läuft lokal
loading…
Über dieses Tool

Füge ein JSON-Beispiel ein — eine API-Antwort, eine Config-Datei — und erhalte ein daraus abgeleitetes TypeScript-Interface: Verschachtelte Objekte werden zu verschachtelten Typen, Arrays bekommen Elementtypen (mit Unions bei gemischtem Inhalt), und Keys, die keine gültigen Bezeichner sind, werden sauber in Anführungszeichen gesetzt.

Generierte Typen sind ein Ausgangspunkt, kein Vertrag: Die Inferenz sieht nur ein Beispiel — ein Feld, das in deinem Beispiel zufällig null ist, wird als null typisiert, und optionale Felder, die fehlten, kennt sie schlicht nicht. Die Ausgabe ist bewusst schlicht — keine Decorators, keine Laufzeitvalidierung — du kannst sie also überall einfügen und verfeinern.

Für Felder, die zwischen Requests variieren, jage ein zweites Beispiel durch und merge von Hand — oder steige auf Schema-first-Tooling um (OpenAPI, zod), sobald sich die Form stabilisiert. Für den täglichen „Ich brauche nur schnell einen Typ für diese Response“-Moment reicht ein einziges Einfügen.

Häufige Fragen

Warum wird mein nullable Feld nur als null typisiert?
Die Inferenz sieht nur das eingefügte Beispiel. War das Feld dort null, ist null alles, was sie wissen kann. Ändere es nach der Generierung zu string | null (oder was der echte Typ ist) — oder füge ein Beispiel ein, in dem das Feld befüllt ist.
Wie werden optionale Felder behandelt?
Sie werden nicht erkannt — ein einzelnes Beispiel kann „immer vorhanden“ nicht von „diesmal vorhanden“ unterscheiden. Felder, die im Beispiel fehlen, fehlen im Typ. Markiere Felder manuell als optional (name?:), wo du weißt, dass die API sie weglässt.
Was ergeben Arrays mit gemischten Typen?
Eine Union: [1, "a"] inferiert (number | string)[]. Leere Arrays inferieren unknown[], da es kein Element zu inspizieren gibt — ersetze das durch den echten Elementtyp, sobald du ihn kennst.
Sollte ich inferierte Typen oder eine Schema-Library wie zod verwenden?
Inferierte Interfaces existieren nur zur Compile-Zeit — sie validieren zur Laufzeit nichts. Für interne Tools und schnelles Typisieren sind sie perfekt; für nicht vertrauenswürdige Eingaben zur Laufzeit definiere ein zod/valibot-Schema und leite den statischen Typ daraus ab.
Verwandte Tools