JSON naar TypeScript-interface en typegenerator — Numio
Genereer TypeScript-interfaces of type-aliassen uit een JSON-voorbeeld, zoals een API-antwoord. Geneste gegevens, null en gemengde arrays worden ondersteund. De conversie vindt plaats in je browser.
Maak benoemde TypeScript-typen voor een API-antwoord.
Converted in your browser. Null stays a value type; ? marks a field missing from some objects in an array. Empty arrays use unknown elements.
JSON
TypeScript
Wanneer gebruik je dit?
- Maak benoemde TypeScript-typen voor een API-antwoord.
- Vergelijk meerdere objecten in een array om verschillende typen en optionele velden te herkennen.
Hoe werkt het
- Plak echte JSON of laad een voorbeeld. Een voorbeeld vervangt je huidige invoer.
- Stel de naam van het hoofdtype in en kies interface (geneste objecten worden afzonderlijke typen) of type (één type-alias met geneste objecten inline).
- Controleer null, optionele velden (?) en unions van string/number en kopieer daarna de typen.
JSON-invoer
[{"id":1,"name":"Tokyo"},{"id":2}]TypeScript-uitvoer (Root, interface)
export type Root = RootValueItem[];
export interface RootValueItem {
id: number;
name?: string;
}Details en beperkingen
Elk array-element wordt bekeken. In het voorbeeld ontbreekt name in het tweede object en wordt het daarom optioneel. Een aanwezig veld met null krijgt in plaats daarvan een union met null.
Een lege array geeft unknown[]. Gemengde arrays worden arrays van een union-type, geen tuples met een vaste lengte.
De typen beschrijven alleen wat in het voorbeeld voorkomt. Velden die nooit voorkomen, datum- of e-mailformaten, waardebereiken en relaties tussen velden worden niet afgeleid.
De invoer moet standaard-JSON zijn. Verwijder opmerkingen of afsluitende komma’s eerst met de JSON-formatter. Voer ID’s met voorloopnullen in als tekenreeksen.
De invoer is beperkt tot 1.000.000 tekens, ongeveer 64 niveaus en 50.000 waarden. TypeScript-typen valideren geen gegevens tijdens uitvoering.
FAQ
Kan ik beter een interface of een type genereren?
Beide beschrijven dezelfde structuur. interface maakt een benoemde interface per genest object, die eenvoudig herbruikbaar is. type maakt één type-alias waarin geneste objecten inline worden uitgeschreven.
Kan de tool een TypeScript-klasse genereren?
Nee. De tool genereert alleen interfaces of type-aliassen. Gebruik JSON naar Zod voor validatie tijdens uitvoering en pas het schema aan je eigen regels aan.
Wat is het verschil tussen null en een optioneel veld?
{"name":null} bevat name met de waarde null; {} bevat helemaal geen name. null blijft in het type staan. ? wordt alleen toegevoegd als het veld ontbreekt in sommige objecten van dezelfde array.
Wat levert een JSON-array op het hoogste niveau op?
Een type-alias voor de array plus een interface voor de elementen, zoals in het bovenstaande voorbeeld waarin Root gelijk is aan RootValueItem[].