JSON zu TypeScript
Fügen Sie ein JSON-Beispiel ein, und das Tool leitet TypeScript-Schnittstellen ab, die seiner Struktur entsprechen. Felder werden durch beobachtete Werte typisiert (string, number, boolean, Array<T>), verschachtelte Objekte erhalten ihre eigenen benannten Schnittstellen, und als null oder fehlend beobachtete Felder werden optional (?) oder nullable (| null), je nach bevorzugtem Stil.
So konvertieren Sie JSON in TypeScript
-
1
JSON einfügen
Ein einzelnes Beispiel reicht aus; mehrere Beispiele verbessern die Nullbarkeit und Union-Inferenz.
-
2
Ausgabestil wählen
`interface` (Standard), `type` Alias oder schreibgeschützte Schnittstelle mit allen Feldern, die als `readonly` markiert sind.
-
3
Optionale Strategie wählen
Felder als `?` (könnten fehlen) oder `| null` (immer vorhanden, könnte null sein) markieren.
-
4
Die Typen kopieren
In eine `.ts`-Datei einfügen, und Sie haben stark typisierten Zugriff auf die API-Antwort.
Beispiel
Eingabe:
{ "id": 1, "name": "Alice", "age": null, "tags": ["admin", "user"], "address": { "city": "Madrid" } }
Ausgabe:
interface User {
id: number;
name: string;
age: number | null;
tags: string[];
address: Address;
}
interface Address {
city: string;
}
Typzuordnung
| JSON | TypeScript |
|---|---|
| Zeichenkette | string |
| Ganzzahl / Dezimalzahl | number |
| Boolescher Wert | boolean |
| nur null | null |
| null + T | T | null (oder T?) |
| Array aus T | T[] |
| gemischtes Array | (T1 | T2)[] |
| Objekt | Benannte verschachtelte Schnittstelle |
| leeres Array | unknown[] (kann nicht abgeleitet werden) |
Optional vs nullable
foo?: string, das Feld könnte fehlen im Objekt.undefined-Überprüfung gilt.foo: string | null, das Feld ist immer vorhanden, könnte aber explizit null sein.foo?: string | null, könnte fehlen ODER null sein.
JSON selbst hat kein undefined, aber APIs variieren, wie sie Abwesenheit signalisieren. Passen Sie Ihre API Semantik an:
- REST-APIs lassen typischerweise fehlende Felder weg ->
?:. - GraphQL gibt immer jedes angeforderte Feld zurück ->
| null. - Einige SDKs verwenden beides in unterschiedlichen Kontexten.
Union vs Literaltypen
Wenn das Tool dasselbe Stringfeld mit einer kleinen Menge von Werten über Beispiele hinweg sieht ("status": "pending", "active", "archived"), kann es eine String-Literal-Union ausgeben:
status: "pending" | "active" | "archived";
Aktivieren Sie “String-Literal-Unionen ableiten”, wenn Sie dies möchten.
Häufige Fehler
- Ableitung aus einem Beispiel. Jedes Feld wird erforderlich; Nullbarkeit kann nicht beobachtet werden. Übergeben Sie 5-10 unterschiedliche Beispiele für bessere Typen.
- Leere Arrays.
"tags": []gibt keine Typinformationen, der Generator gibtunknown[]aus. Stellen Sie ein Beispiel mit mindestens einem Element bereit. - Gemischte Typ-Arrays.
[1, "two", true]produziert(number | string | boolean)[]. In der Regel bedeutet dies, dass das JSON neu gestaltet werden sollte, anstatt typisiert zu werden. - Numerische String-Schlüssel. JSON
{"1": "a", "2": "b"}ist immer noch ein Objekt in TypeScript (Record<string, string>), kein Array. Der Generator behandelt dies korrekt.
Häufig gestellte Fragen
Passen Sie Ihre API an. REST-APIs, die null-Felder weglassen, möchten ?:. GraphQL, das immer jedes ausgewählte Feld zurückgibt, möchte | null. Im Zweifelsfall ist T | null mit erforderlicher Syntax strenger und fängt mehr Fehler zur Kompilierzeit ab.
Ja, wenn Sie es aktivieren und mehrere Beispiele bereitstellen. Ein Feld, das mit 2-5 unterschiedlichen Stringwerten über Beispiele hinweg beobachtet wird, wird als Literal-Union ausgegeben. Jenseits dieser Schwelle fällt es auf string zurück.
interface für die meisten Fälle, es ist erweiterbar und TypeScript optimiert es besser. type-Aliase sind nützlich für Unions, Schnittmengen, Tupel und abgeleitete Typen. Für aus JSON abgeleitete Typen funktioniert beides; wählen Sie eine Projektkonvention.
Ja. Jedes verschachtelte Objekt wird zu seiner eigenen Schnittstelle, mit Namen, die vom Schlüssel abgeleitet sind (user.address -> Address). Für sehr tiefe oder sich wiederholende Strukturen ziehen Sie ein JSON-Schema und einen speziellen Schema-zu-TS-Generator in Betracht.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Farbrad-Explorer
Erforschen Sie das Farbrad interaktiv. Rotieren Sie Harmonien, vergleichen Sie HSL mit RYB, erkennen Sie komplementäre und triadische Paare in Echtzeit.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
HTML-Formatter
Formatieren Sie HTML lokal im Browser mit zwei oder vier Leerzeichen Einrückung. HTML wird weder hochgeladen noch validiert.
Tool in anderen Sprachen verfügbar
- JSON ke TypeScript [ID]
- JSONからTypeScriptへ [JA]
- JSON เป็น TypeScript [TH]
- JSON sang TypeScript [VI]
- JSON에서 TypeScript로 [KO]
- JSON do TypeScript [PL]
- JSON para TypeScript [PT]
- JSON a TypeScript [ES]
- JSON till TypeScript [SV]
- تحويل JSON إلى TypeScript [AR]
- JSON vers TypeScript [FR]
- JSON naar TypeScript [NL]
- JSON в TypeScript [RU]
- JSON'dan TypeScript'e [TR]
- JSON 转 TypeScript [ZH]
- JSON to TypeScript [EN]
- JSON a TypeScript [IT]