Was dieses Werkzeug tut
Aus einer JSON-Probe werden TypeScript-Typen, ein benanntes Interface je Objekt.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
export interface Root {
id: number;
name: string;
address: Address;
}
export interface Address {
city: string;
}
interface oder type, exportiert oder nicht, und der Wurzelname: Ihre Einstellung.
Eine Liste an der Wurzel hat endlich einen Namen
Ein Array von Objekten ist die häufigste Probe überhaupt — es ist, was ein Listen-Endpunkt liefert. Die Ausgabe war bisher allein das Interface des Elements:
export interface UsersItem {
id: number;
}
und der eingetippte Wurzelname führte nirgendwohin. Die Liste selbst ist nun benannt:
export type Users = UsersItem[];
export interface UsersItem {
id: number;
}
Das war ein Fehler, beim Schreiben dieser Seite gefunden und behoben. Die Zod- und io-ts-Generatoren dieser Seite gaben ihre Wurzel längst aus; TypeScript nicht.
Gleicher Name, andere Form
Typnamen stammen aus Schlüsseln, also können zwei Zweige beide Address wollen. Unterscheiden sich die Formen, wird die zweite zu Address2, statt in einem Typ zu verschmelzen, der zu keiner passt. Sind die Formen gleich, wird eine Definition geteilt — ein Address, zweimal referenziert.
Was eine Probe nicht sagen kann
Nichts wird als optional markiert, und das mit Absicht: ein einmal gesehener Schlüssel sagt, dass er auftreten kann, nicht dass er immer auftritt. "nickname": null ergibt nickname: null, denn mehr enthält die Probe nicht — weiten Sie es selbst zu string | null, sobald Sie es wissen.
Eine zwanzigstellige Kennung wird number getypt, und eine JavaScript-Zahl fasst sie nicht: jenseits von 2^53 ändert sich der Wert beim Parsen. Der Typ lügt nicht über die Probe, er erbt eine Grenze der Sprache — ist das Feld eine Snowflake-ID, machen Sie string daraus und halten Sie sie von JSON.parse fern.
Ein wiederholter Schlüssel wird abgelehnt
{"a": 1, "a": "x"} ergab a: string, wobei das letzte Vorkommen stillschweigend gewann. Zwei Werte, ein Schlüssel, keine Möglichkeit zu sagen, welchen Typ das Feld hat: die Umwandlung hält nun an und nennt das Dokument mehrdeutig. Dieselbe Antwort gab der JSON-Validator hier für dasselbe Dokument schon vorher.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.