JSON till TypeScript
Klistra in ett JSON-exempel så härleder verktyget TypeScript-gränssnitt som motsvarar dess struktur. Fält typas utifrån de observerade värdena (string, number, boolean, Array<T>); nästlade objekt får egna namngivna gränssnitt; och fält som observeras som null eller saknade blir valfria (?) eller nullbara (| null) beroende på vilken stil du föredrar.
Så konverterar du JSON till TypeScript
-
1
Klistra in JSON
Ett enda exempel räcker, men flera exempel förbättrar härledningen av nullbarhet och uniontyper.
-
2
Välj utdatastil
`interface` (standard), `type`-alias eller ett skrivskyddat gränssnitt där alla fält är märkta som `readonly`.
-
3
Välj strategi för valfrihet
Märk fältet som `?` (kan saknas) eller `| null` (alltid närvarande, men kan vara null).
-
4
Kopiera typerna
Klistra in dem i en `.ts`-fil så får du starkt typad åtkomst till API-svaret.
Exempel
Indata:
{ "id": 1, "name": "Alice", "age": null, "tags": ["admin", "user"], "address": { "city": "Madrid" } }
Utdata:
interface User {
id: number;
name: string;
age: number | null;
tags: string[];
address: Address;
}
interface Address {
city: string;
}
Typmappning
| JSON | TypeScript |
|---|---|
| sträng | string |
| heltal / decimaltal | number |
| booleskt värde | boolean |
| enbart null | null |
| null + T | T | null (eller T?) |
| array av T | T[] |
| blandad array | (T1 | T2)[] |
| objekt | Namngivet nästlat gränssnitt |
| tom array | unknown[] (kan inte härledas) |
Valfritt fält kontra nullbart fält
foo?: string, fältet kan saknas i objektet. Enundefined-kontroll gäller.foo: string | null, fältet är alltid närvarande, men kan uttryckligen vara null.foo?: string | null, kan saknas ELLER vara null.
JSON i sig har inte undefined, men olika API:er signalerar frånvaro på olika sätt. Anpassa efter semantiken hos ditt API.
- REST-API:er utelämnar vanligtvis saknade fält ->
?:. - GraphQL returnerar alltid varje begärt fält ->
| null. - Vissa SDK:er använder båda i olika sammanhang.
Uniontyper kontra literala typer
Om verktyget ser att samma strängfält bara antar en liten uppsättning värden över exemplen ("status": "pending", "active", "archived") kan det generera en union av strängliteraler:
status: "pending" | "active" | "archived";
Aktivera “härled unioner av strängliteraler” om du vill ha detta.
Vanliga misstag
- Härleda från ett enda exempel. Varje fält blir obligatoriskt; nullbarhet kan inte observeras. Ge 5-10 varierade exempel för bättre typer.
- Tomma arrayer.
"tags": []ger ingen typinformation, generatorn producerarunknown[]. Ange ett exempel med minst ett element. - Arrayer med blandade typer.
[1, "two", true]ger(number | string | boolean)[]. Vanligtvis betyder det att JSON:en bör designas om i stället för att typas som den är. - Numeriska strängnycklar. JSON
{"1": "a", "2": "b"}är fortfarande ett objekt i TypeScript (Record<string, string>), inte en array. Generatorn hanterar detta korrekt.
Vanliga frågor
Anpassa efter ditt API. REST-API:er som utelämnar null-fält passar med ?:. GraphQL, som alltid returnerar varje valt fält, passar med | null. När du är osäker är T | null med obligatorisk syntax striktare och fångar fler buggar vid kompilering.
Ja, om du aktiverar det och anger flera exempel. Ett fält som över exemplen observeras med 2-5 olika strängvärden matas ut som en literal union. Över den tröskeln faller det tillbaka till string.
interface i de flesta fall, det är öppet för utökning och TypeScript optimerar det bättre. type-alias är användbara för unioner, snitt, tupler och mappade typer. För typer som härleds från JSON fungerar båda; välj en projektkonvention.
Ja. Varje nästlat objekt blir ett eget gränssnitt, med namn som härleds från nyckeln (user.address -> Address). För mycket djupa eller repetitiva strukturer bör du överväga ett JSON Schema och en särskild schema-to-TS-generator.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Referens för kortkommandon
Sök dokumenterade standardkommandon för VS Code, Chrome och Bash med GNU Readline i macOS, Windows och Linux.
HTML-formaterare
Formatera HTML lokalt i webbläsaren med indrag på två eller fyra blanksteg. HTML laddas inte upp eller valideras.
E-postvalidator
Validera en e-postadress: RFC 5322-syntaxkontroll, live-slagning av MX-poster samt detaljer om lokal del, domän och längd. Ingen e-post skickas.
EditorConfig-generator
Generera en .editorconfig-fil med dina regler för indragsstil och -storlek, radslut, teckenuppsättning och blanksteg för enhetlig formatering i alla IDE:er och editorer.
Verktyget finns på andra språk
- JSON sang TypeScript [VI]
- JSON a TypeScript [ES]
- JSON para TypeScript [PT]
- تحويل JSON إلى TypeScript [AR]
- JSONからTypeScriptへ [JA]
- JSON เป็น TypeScript [TH]
- JSON zu TypeScript [DE]
- JSON에서 TypeScript로 [KO]
- JSON naar TypeScript [NL]
- JSON vers TypeScript [FR]
- JSON ke TypeScript [ID]
- JSON do TypeScript [PL]
- JSON 转 TypeScript [ZH]
- JSON to TypeScript [EN]
- JSON a TypeScript [IT]
- JSON в TypeScript [RU]
- JSON'dan TypeScript'e [TR]