Aller au contenu
Tout en local

Type TypeScript en JSON Schema

Convertissez une interface ou un alias de type TypeScript en JSON Schema.

Entrée
Sortie

Type TypeScript en JSON Schema

Collez une interface ou un alias de type TypeScript et cet outil génère le JSON Schema équivalent, prêt à valider les charges de travail d'API, les fichiers de configuration ou toute autre donnée JSON qui doit correspondre à vos définitions de type. Il est conçu pour les développeurs qui décrivent déjà leurs formes de données en TypeScript et souhaitent un schéma sans en écrire un à partir de zéro ou configurer une étape de compilation.

Choisissez entre JSON Schema draft-07 et le dialecte plus récent 2020-12, car les validateurs et les outils diffèrent encore sur lequel ils s'attendent. Les unions de littéraux de chaîne comme 'actif' | 'inactif' peuvent s'afficher soit sous forme d'enum, soit sous forme d'anyOf de valeurs const, et vous pouvez exiger que les objets rejettent les propriétés inconnues, convertir les commentaires de documentation en champs de description, ou extraire les interfaces nommées dans un bloc $defs (ou definitions) référencé par $ref au lieu de les intégrer partout où ils sont utilisés.

Les tableaux, tuples, types Record et Map, et les unions incluant null sont tous traités de la manière dont TypeScript les utilise réellement — un champ nullable devient un tableau de types ou une branche anyOf plutôt que d'être silencieusement supprimé. Les constructions qui n'ont pas d'équivalent JSON Schema, comme les méthodes, les types de fonction ou les paramètres génériques non résolus, sont convertis aussi généreusement que possible et listés comme des avertissements sous le résultat pour que rien ne échoue silencieusement.

Tout s'exécute localement dans votre navigateur ; vos définitions de type et le schéma généré ne sont jamais téléchargés nulle part. Copiez le résultat, téléchargez-le en tant que fichier .txt, ou envoyez-le directement à l'entrée d'un autre outil pour continuer à travailler dessus.

FAQ

Quelles parties de TypeScript peuvent être converties?
Interfaces, alias de type, littéraux d'objet imbriqués, tableaux, tuples, Record/Map/Set, Date, Partial/Required/Pick/Omit, et unions incluant les unions de littéraux de chaîne et null. Les constructions qui n'ont pas d'équivalent JSON Schema, comme les méthodes et les types de fonction, sont ignorées et énumérées comme des avertissements.
Quelle est la différence entre draft-07 et 2020-12?
Les deux sont des dialectes JSON Schema. 2020-12 est le courant et utilise $defs et prefixItems pour les tuples, tandis que draft-07 utilise definitions et un tableau d'items. Choisissez celui que votre validateur s'attend.
Que se passe-t-il avec les propriétés marquées avec '?'?
Elles sont laissées de côté du tableau required du schéma, de sorte que le schéma généré correspond à l'idée propre de TypeScript sur les champs optionnels.
Pourquoi certains champs se retrouvent-ils avec un schéma vide {}?
Cela se produit pour les constructions que JSON Schema ne peut pas exprimer, comme un paramètre de type générique ou un type que l'outil n'a pas pu résoudre. Un avertissement est ajouté sous le résultat expliquant exactement quel champ et pourquoi.
Mon code TypeScript est-il téléchargé quelque part?
Non. La conversion s'exécute entièrement dans votre navigateur — vos définitions de type et le schéma généré ne quittent jamais votre appareil.