JSON vers TypeScript
Collez un exemple JSON et l’outil infère des interfaces TypeScript qui correspondent à sa structure. Les champs sont typés par les valeurs observées (string, number, boolean, Array<T>), les objets imbriqués obtiennent leurs propres interfaces nommées, et les champs observés comme null ou manquants deviennent optionnels (?) ou nullables (| null) selon le style que vous préférez.
Comment convertir JSON en TypeScript
-
1
Collez JSON
Un seul exemple suffit ; plusieurs exemples améliorent l'inférence de nullabilité et d'union.
-
2
Choisissez le style de sortie
`interface` (par défaut), alias `type`, ou interface en lecture seule avec tous les champs marqués `readonly`.
-
3
Choisissez la stratégie optionnelle
Marquez les champs `?` (peut être absent) ou `| null` (toujours présent, peut être null).
-
4
Copiez les types
Collez dans un fichier `.ts` et vous avez un accès fortement typé à la réponse de l'API.
Exemple
Entrée :
{ "id": 1, "name": "Alice", "age": null, "tags": ["admin", "user"], "address": { "city": "Madrid" } }
Sortie :
interface User {
id: number;
name: string;
age: number | null;
tags: string[];
address: Address;
}
interface Address {
city: string;
}
Mappage des types
| JSON | TypeScript |
|---|---|
| chaîne | string |
| entier / décimal | number |
| booléen | boolean |
| null seul | null |
| null + T | T | null (ou T?) |
| tableau de T | T[] |
| tableau mixte | (T1 | T2)[] |
| objet | Interface imbriquée nommée |
| tableau vide | unknown[] (ne peut pas être inféré) |
Optionnel vs nullable
foo?: string, le champ peut être absent de l’objet. La vérificationundefineds’applique.foo: string | null, le champ est toujours présent mais peut explicitement être null.foo?: string | null, peut être absent OU null.
JSON lui-même n’a pas undefined, mais les API varient sur la façon dont elles signalent l’absence. Adaptez-vous à la sémantique de votre API :
- Les API REST omettent généralement les champs manquants ->
?:. - GraphQL renvoie toujours chaque champ demandé ->
| null. - Certains SDK utilisent les deux dans différents contextes.
Types d’union vs types littéraux
Si l’outil voit le même champ de chaîne avec un petit ensemble de valeurs à travers les exemples ("status": "pending", "active", "archived"), il peut émettre une union littérale de chaînes :
status: "pending" | "active" | "archived";
Activez “inférer des unions littérales de chaînes” si vous le souhaitez.
Erreurs courantes
- Inférer à partir d’un seul exemple. Chaque champ devient requis ; la nullabilité ne peut pas être observée. Passez 5-10 exemples variés pour de meilleurs types.
- Tableaux vides.
"tags": []ne donne aucune information de type, le générateur émetunknown[]. Fournissez un exemple avec au moins un élément. - Tableaux de types mixtes.
[1, "deux", true]produit(number | string | boolean)[]. Cela signifie généralement que le JSON devrait être restructuré plutôt que typé. - Clés de chaîne numériques. JSON
{"1": "a", "2": "b"}est toujours un objet en TypeScript (Record<string, string>), pas un tableau. Le générateur gère cela correctement.
Questions fréquentes
Adaptez-vous à votre API. Les API REST qui suppriment les champs null veulent ?:. GraphQL, qui renvoie toujours chaque champ sélectionné, veut | null. En cas de doute, T | null avec une syntaxe requise est plus stricte et attrape plus de bugs à la compilation.
Oui, si vous l’activez et fournissez plusieurs exemples. Un champ observé avec 2-5 valeurs de chaîne distinctes à travers les exemples est émis comme une union littérale. Au-delà de ce seuil, il revient à string.
interface pour la plupart des cas, elle est ouverte à l’extension et TypeScript l’optimise mieux. Les alias type sont utiles pour les unions, les intersections, les tuples et les types mappés. Pour les types dérivés de JSON, les deux fonctionnent ; choisissez une convention de projet.
Oui. Chaque objet imbriqué devient sa propre interface, avec des noms dérivés de la clé (user.address -> Address). Pour des structures très profondes ou répétitives, envisagez un schéma JSON et un générateur dédié de schéma à TS.
Outils similaires
Référence de la table ASCII
Table ASCII complète de 0 à 127 avec décimal, hexadécimal, octal, binaire et référence numérique HTML pour chaque caractère, y compris les codes de contrôle comme NUL, LF et DEL.
Référence des caractères HTML
Liste consultable des entités HTML, de leurs codes nommés et numériques, et un copier-coller en un clic pour les caractères et symboles spéciaux.
Référence des raccourcis clavier
Recherchez les raccourcis par défaut documentés de VS Code, Chrome et Bash avec GNU Readline sous macOS, Windows et Linux.
Générateur de carte CSS
Créez le CSS d’un conteneur de carte : fond, bordure, rayon des angles, espacement intérieur et ombre douce, avec aperçu immédiat et code à copier-coller.
Formateur HTML
Mettez du HTML en forme localement dans le navigateur avec une indentation de deux ou quatre espaces. Aucun HTML n’est envoyé ni validé.
Recherche de nom de couleur
Trouvez la couleur nommée CSS standardisée la plus proche d’une valeur HEX, RGB ou HSL grâce à l’écart CIEDE2000.
Outil disponible dans d’autres langues
- JSON till TypeScript [SV]
- تحويل JSON إلى TypeScript [AR]
- JSON naar TypeScript [NL]
- JSON sang TypeScript [VI]
- JSON เป็น TypeScript [TH]
- JSON a TypeScript [ES]
- JSONからTypeScriptへ [JA]
- JSON ke TypeScript [ID]
- JSON zu TypeScript [DE]
- JSON do TypeScript [PL]
- JSON para TypeScript [PT]
- JSON에서 TypeScript로 [KO]
- JSON в TypeScript [RU]
- JSON'dan TypeScript'e [TR]
- JSON 转 TypeScript [ZH]
- JSON to TypeScript [EN]
- JSON a TypeScript [IT]