JSON naar TypeScript
Plak een JSON-voorbeeld en de tool leidt TypeScript-interfaces af die passen bij de structuur ervan. Velden worden getypeerd op basis van de waargenomen waarden (string, number, boolean, Array<T>); geneste objecten krijgen hun eigen benoemde interfaces; en velden die als null of ontbrekend worden waargenomen, worden optioneel (?) of nullable (| null), afhankelijk van de stijl die u verkiest.
JSON naar TypeScript converteren
-
1
JSON plakken
Eén voorbeeld volstaat, maar meerdere voorbeelden verbeteren de afleiding van nullbaarheid en uniontypen.
-
2
Kies de uitvoerstijl
`interface` (standaard), `type`-alias, of een alleen-lezen interface waarbij alle velden zijn gemarkeerd als `readonly`.
-
3
Kies de optionaliteitsstrategie
Markeer een veld als `?` (kan ontbreken) of `| null` (altijd aanwezig, maar kan null zijn).
-
4
Kopieer de typen
Plak ze in een `.ts`-bestand en u hebt sterk getypeerde toegang tot het API-antwoord.
Voorbeeld
Invoer:
{ "id": 1, "name": "Alice", "age": null, "tags": ["admin", "user"], "address": { "city": "Madrid" } }
Uitvoer:
interface User {
id: number;
name: string;
age: number | null;
tags: string[];
address: Address;
}
interface Address {
city: string;
}
Typetoewijzing
| JSON | TypeScript |
|---|---|
| tekenreeks | string |
| geheel getal / decimaal | number |
| booleaanse waarde | boolean |
| alleen null | null |
| null + T | T | null (of T?) |
| array van T | T[] |
| gemengde array | (T1 | T2)[] |
| object | Benoemde geneste interface |
| lege array | unknown[] (kan niet worden afgeleid) |
Optioneel veld versus nullable veld
foo?: string, het veld kan ontbreken in het object. Er geldt eenundefined-controle.foo: string | null, het veld is altijd aanwezig, maar kan expliciet null zijn.foo?: string | null, kan ontbreken OF null zijn.
JSON zelf kent geen undefined, maar API’s geven afwezigheid op verschillende manieren aan. Stem dit af op de semantiek van uw API.
- REST-API’s laten ontbrekende velden doorgaans weg ->
?:. - GraphQL retourneert altijd elk opgevraagd veld ->
| null. - Sommige SDK’s gebruiken beide in verschillende contexten.
Uniontypen versus letterlijke typen
Als de tool ziet dat hetzelfde tekenreeksveld in de voorbeelden slechts een kleine set waarden aanneemt ("status": "pending", "active", "archived"), kan hij een union van tekenreeksliteralen genereren:
status: "pending" | "active" | "archived";
Schakel “unions van tekenreeksliteralen afleiden” in als u dit wilt.
Veelgemaakte fouten
- Afleiden uit één voorbeeld. Elk veld wordt verplicht; nullbaarheid kan niet worden waargenomen. Geef voor betere typen 5-10 gevarieerde voorbeelden op.
- Lege arrays.
"tags": []geeft geen typeinformatie, de generator produceertunknown[]. Geef een voorbeeld met ten minste één element. - Arrays met gemengde typen.
[1, "two", true]levert(number | string | boolean)[]op. Meestal betekent dit dat de JSON beter opnieuw kan worden ontworpen dan getypeerd. - Numerieke tekenreekssleutels. JSON
{"1": "a", "2": "b"}is in TypeScript nog steeds een object (Record<string, string>), geen array. De generator verwerkt dit correct.
Veelgestelde vragen
Stem het af op uw API. REST-API’s die null-velden weglaten passen bij ?:. GraphQL, dat altijd elk geselecteerd veld retourneert, past bij | null. Bij twijfel is T | null met verplichte syntaxis strenger en vangt het meer bugs af tijdens het compileren.
Ja, als u dit inschakelt en meerdere voorbeelden aanlevert. Een veld dat in de voorbeelden 2-5 verschillende tekenreekswaarden vertoont, wordt uitgevoerd als een letterlijke union. Boven die drempel valt het terug op string.
In de meeste gevallen interface, het staat open voor uitbreiding en TypeScript optimaliseert het beter. type-aliassen zijn handig voor unions, intersecties, tuples en mapped types. Voor uit JSON afgeleide typen werkt beide; kies een projectconventie.
Ja. Elk genest object wordt een eigen interface, met namen die zijn afgeleid van de sleutel (user.address -> Address). Overweeg voor zeer diepe of repetitieve structuren een JSON Schema en een speciale schema-to-TS-generator.
Gerelateerde tools
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
HTML-tekenreferentie
Een doorzoekbare lijst met HTML-entiteiten, hun benoemde en numerieke codes, plus kopiëren met één klik voor speciale tekens en symbolen.
Sneltoetsenoverzicht
Zoek gedocumenteerde standaardsneltoetsen voor VS Code, Chrome en Bash met GNU Readline op macOS, Windows en Linux.
E-mailvalidator
Valideer een e-mailadres: RFC 5322-syntaxcontrole, live MX-record-zoekopdracht, plus details over lokaal deel, domein en lengte. Er wordt geen e-mail verstuurd.
EditorConfig-generator
Genereer een .editorconfig-bestand met uw regels voor inspringstijl en -grootte, regeleinde, tekenset en witruimte voor consistente opmaak in alle IDE's en editors.
HTML-opmaker
Formatteer HTML lokaal in de browser met twee of vier spaties inspringing. HTML wordt niet geüpload of gevalideerd.
Tool beschikbaar in andere talen
- JSON till TypeScript [SV]
- تحويل JSON إلى TypeScript [AR]
- JSON เป็น TypeScript [TH]
- JSON sang TypeScript [VI]
- JSON ke TypeScript [ID]
- JSON a TypeScript [ES]
- JSONからTypeScriptへ [JA]
- JSON에서 TypeScript로 [KO]
- JSON vers TypeScript [FR]
- JSON zu TypeScript [DE]
- JSON do TypeScript [PL]
- JSON para TypeScript [PT]
- JSON в TypeScript [RU]
- JSON'dan TypeScript'e [TR]
- JSON 转 TypeScript [ZH]
- JSON to TypeScript [EN]
- JSON a TypeScript [IT]