Hoppa till innehåll
100% lokalt

TypeScript-typ till JSON Schema

Konvertera ett TypeScript-gränssnitt eller typ-alias till JSON Schema.

Inmatning
Utmatning

TypeScript-typ till JSON Schema

Klistra in ett TypeScript-gränssnitt eller typ-alias, och det här verktyget genererar motsvarande JSON Schema, redo att validera API-nyttolaster, konfigurationsfiler eller andra JSON-data som ska matcha dina typ-definitioner. Det är byggt för utvecklare som redan beskriver sina datastrukturer i TypeScript och vill ha ett schema utan att skriva det för hand eller konfigurera ett byggsteg.

Välj mellan JSON Schema draft-07 och den nyare 2020-12-dialekten, eftersom validatorer och verktyg fortfarande skiljer sig åt i vilken de förväntar sig. String-literal-unions som 'active' | 'inactive' kan renderas antingen som enum eller som anyOf med konstanta värden, och du kan tvinga objekt att förkasta okända egenskaper, konvertera dokumentationskommentarer till beskrivningsfält eller extrahera namngivna gränssnitt till ett $defs (eller definitions)-block som refereras av $ref istället för att bädda in dem överallt.

Arrayer, tupler, Record- och Map-typer, och unions inklusive null hanteras på det sätt som TypeScript faktiskt använder dem — ett nullable-fält blir en typ-array eller anyOf-gren snarare än att tyst släppas. Konstruktioner utan JSON Schema-motsvarigheter, som metoder, funktionstyper eller olösta generiska parametrar, konverteras så permissivt som möjligt och visas som varningar under resultatet så att ingenting misslyckas tyst.

Allt körs lokalt i din webbläsare; dina typ-definitioner och det genererade schemat lämnar aldrig din enhet. Kopiera resultatet, ladda ner det som en .txt-fil eller skicka det direkt till ett annat verktygs inmatning för att fortsätta arbeta med det.

FAQ

Vilka delar av TypeScript kan konverteras?
Gränssnitt, typ-alias, kapslade objektliteraler, arrayer, tupler, Record/Map/Set, Date, Partial/Required/Pick/Omit och unions inklusive string-literal unions och null. Konstruktioner utan JSON Schema-motsvarigheter, som metoder och funktionstyper, hoppas över och listas som varningar.
Vad är skillnaden mellan draft-07 och 2020-12?
Båda är JSON Schema-dialekter. 2020-12 är den nuvarande och använder $defs och prefixItems för tupler, medan draft-07 använder definitions och en items-array. Välj den som din validator förväntar sig.
Vad händer med egenskaper märkta med '?'?
De utelämnas från schemats required-array, så det genererade schemat återspeglar TypeScripts egen uppfattning om vilka fält som är valfria.
Varför slutar vissa fält i ett tomt schema {}?
Det händer för konstruktioner som JSON Schema inte kan uttrycka, såsom generiska typparametrar eller en typ som verktyget inte kunde lösa. En varning under resultatet förklarar exakt vilket fält och varför.
Laddas min TypeScript-kod upp någonstans?
Nej. Konverteringen sker helt och hållet i din webbläsare — dina typ-definitioner och det genererade schemat lämnar aldrig din enhet.