JSON til TypeScript-konverter
Indsæt et API-svar, og få TypeScript-interfaces eller type-aliasser klar til brug, med indlejrede typer, valgfrie felter og null-unions udledt for dig.
Kører i din browserIngen tilmeldingIntet uploades
Sådan bruger du JSON til TypeScript
- Indsæt et JSON-eksempel, f.eks. et API-svar, i venstre felt, eller åbn en
.json-fil. - Angiv navnet på rodtypen (f.eks.
UserellerApiResponse). - Vælg
interface- ellertype-deklarationer, og slåexport,readonlyeller valgfrie felter overalt til eller fra. - Vælg
unknown(sikrere) elleranyfor værdier, som eksemplet ikke kan afsløre, f.eks. tomme arrays og null-værdier. - Kopiér den genererede kode, eller download den som en
.ts-fil.
Sådan udledes typerne
- Primitiver: strenge, tal og booleans bliver til
string,numberogboolean. - Indlejrede objekter bliver til deres egne navngivne interfaces i PascalCase, så
billing_addressbliver tilBillingAddress. - Arrays af objekter flettes til én elementtype, navngivet i ental:
usersgiverUser[]. En nøgle, der mangler i nogle elementer, bliver valgfri (key?:). - Null-værdier kombineres med de andre værdier, der ses for den nøgle:
string | null. En nøgle, der altid kun ernull, falder tilbage tilunknownellerany. - Blandede arrays bliver til union-arrays som
(number | string)[]. - Identiske strukturer deklareres én gang og genbruges, og forskellige strukturer, der ville få samme navn, får et numerisk suffiks.
- Nøgler, der ikke er gyldige identifikatorer, som
"first-name"eller"2fa", sættes i anførselstegn.
interface vs. type
For almindelige objektstrukturer er de to næsten udskiftelige. interface-deklarationer kan udvides og flettes og giver lidt tydeligere compilerfejl. type-aliasser kan også udtrykke unions og mapped types. Mange teams bruger interfaces til API-modeller og typer til alt andet; vælg det, din kodebase eller linter (@typescript-eslint/consistent-type-definitions) forventer.
Få bedre typer ud af dit eksempel
Typerne kan kun blive så komplette som eksemplet. Indsæt et svar, der indeholder valgfrie felter, eller et array med flere forskelligartede elementer, så generatoren kan finde valgfrie og nullable nøgler. Værdier som datoer og enums kommer som almindelige strenge i JSON; indsnævr dem i hånden bagefter, f.eks. status: 'active' | 'disabled'. Til validering under kørsel kan du kombinere de genererede typer med et schema-bibliotek som Zod.
Ofte stillede spørgsmål
Bliver min JSON uploadet?
Hvordan findes valgfrie egenskaber?
?. Med et enkelt objekt er alle nøgler påkrævede, medmindre du sætter flueben i Alt valgfrit.Skal jeg bruge <code>unknown</code> eller <code>any</code>?
unknown er sikrere: TypeScript tvinger dig til at indsnævre værdien, før du bruger den. any slår typetjek fra for den værdi. Brug det kun, hvis du har tænkt dig at forfine typerne senere.Hvorfor er en ISO-dato typet som <code>string</code>?
new Date() efter parsing, så ændr egenskaben til Date i din model.