Générez des types TypeScript depuis des exemples JSON complets
Inférez des types TypeScript depuis des documents JSON complets, préservez les clés littérales et distinguez absence et null localement.
Espace de travail de l’outil
JSON vers TypeScript
Déclarations exportées de types TypeScript.
Les types décrivent les exemples ; ils ne valident pas les données à l’exécution. Les nombres JavaScript peuvent approximer les grands entiers.
Activez JavaScript pour générer le code. Vous pouvez lire et modifier le JSON.
Ce navigateur ne peut pas démarrer le Worker local. La génération est indisponible.
Tous les éléments et documents contribuent au même contrat. Un tableau racine reste un tableau. Un champ absent diffère de null.
Jusqu’à 20 documents, 1 000 000 d’unités UTF-16 en entrée et 2 000 000 en sortie ; d’autres budgets de ressources s’appliquent.
Votre JSON est traité localement dans un Worker du navigateur. Il n’est ni envoyé ni enregistré.
Passer à un document conserve uniquement l’exemple actif. Confirmez ou annulez.
Utilisez 1 à 64 lettres et chiffres ASCII, en commençant par une lettre. Les noms réservés sont rejetés.
Prêt à recevoir du JSON.
Certains détails de diagnostic sont omis. Les totaux des avertissements restent visibles.
Détail des noms
Le presse-papiers est indisponible ou son accès est refusé. Téléchargez le fichier ou ouvrez explicitement le code complet pour le copier. Un fichier volumineux peut prendre plus de temps à afficher.
Un document ou plusieurs exemples complets
Collez du JSON strict ou chargez un fichier local UTF-8. Choisissez un document ou ajoutez jusqu’à vingt documents complets du même contrat. Tous doivent être valides ; exemples vides, clés dupliquées, commentaires et documents concaténés arrêtent l’opération. Générez par action explicite. Tous les éléments contribuent, y compris les derniers d’un tableau. Un tableau racine reste un tableau.
L’éditeur indique l’exemple actif et le total. Après la génération, consultez le nom du fichier, l’expression du type racine, le nombre de nœuds JSON et la taille du code complet. Ces informations décrivent le résultat actuel ; la copie et le téléchargement incluent tout le fichier même lorsque l’aperçu est limité.
[{"id":1},{"id":2,"nombre":"Ana"}]
export type RootItem = {
"id": number;
"nombre"?: string;
};
export type Root = Array<RootItem>;
Absence, null et clés exactes
? indique une absence observée parmi les objets du même contexte. Null est un autre type : [{"x":null},{"x":"a"},{}] produit un champ facultatif null | string. La présence observée ne prouve pas une règle de l’API. Les objets de propriétés différentes gardent des contextes distincts. Chaque clé utilise un littéral entre guillemets : class, __proto__, clés vides, guillemets et Unicode sont préservés. Seuls les noms des types sont ajustés pour éviter les collisions.
Les tableaux mixtes conservent toutes leurs branches. [] produit Array<unknown> avec un avertissement ; {} utilise Record<string, unknown> faute de champs observés. Aucune date, enum, tuple, discriminant, validation runtime ni logique métier n’est inférée. Les déclarations exportées acceptent strict et exactOptionalPropertyTypes de TypeScript ; elles ne valident pas les données à l’exécution.
Nombres, limites et exportation complète
Les nombres restent number. L’inférence utilise les lexèmes originaux ; les avertissements de précision JavaScript restent visibles. La cible avertit lorsqu’un grand entier ou une perte de précision peut entraîner une approximation. Aucun nombre n’est transformé silencieusement en chaîne ou bigint.
Le profil autorise 20 exemples, 1 000 000 d’unités UTF-16 d’entrée, 4 000 000 d’octets UTF-8 d’entrée et par fichier, une profondeur de 200 et 100 000 nœuds source agrégés. L’analyse dispose de 1 000 000 d’unités de travail partagées ; l’inférence, de 100 000 visites, 10 000 types, 20 000 champs distincts et 2 000 000 d’unités de fusion. L’émission autorise 2 000 déclarations et 4 000 000 d’unités de travail. La sortie accepte 2 000 000 d’unités UTF-16 et 8 000 000 d’octets. Tous les maxima ne peuvent pas nécessairement être atteints ensemble. La génération expire après 15 secondes et aucun échec ne publie de code partiel.
L’aperçu affiche jusqu’à 20 000 unités UTF-16. La copie et le téléchargement incluent le types.ts complet et actuel, en text/plain;charset=utf-8, UTF-8 sans BOM, LF et une fin de ligne finale. Jusqu’à 100 diagnostics et 50 lignes de noms totalisant 10 000 unités sont affichés, avec les omissions. Si le presse-papiers est refusé, ouvrez explicitement le code complet pour le copier. Un BOM initial est retiré pour l’analyse ; les positions se rapportent au texte original visible. Annuler termine le Worker et conserve l’entrée. Modifier exemples, ordre, mode ou nom racine invalide la sortie et les actions.
Le traitement reste local dans un Worker du navigateur, sans envoi, stockage, compilateur distant ni données dans les liens. JavaScript et un Worker local sont requis. La page ne compile et n’exécute jamais le code généré.