Générateur de JSON Schema depuis TypeScript Interface (Draft-07 & 2020-12)
Compilateur de schéma TypeScript

Générateur de JSON Schema depuis TypeScript Interface (Draft-07 & 2020-12)

Transformez vos interfaces TypeScript, alias de types et commentaires JSDoc en définitions JSON Schema standard pour vos contrats d'API et validateurs de formulaires.

Conformité Draft-07 & 2020-12
Zéro transmission au serveur
Préréglages :
Version du Draft:
Type Racine:
Clé de Définitions:
Propriétés Additionnelles:
Indentation:
Interfaces & Types TypeScript0 Types
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "EmptySchema",
  "type": "object",
  "properties": {}
}
Interfaces & Types
0AST analysé
Version JSON Schema
Draft 2020-12$defs
Propriétés & Règles
0règles synthétisées

100% Analyse AST Côté Client

L'analyse syntaxique TypeScript et la génération JSON Schema s'exécutent entièrement dans votre navigateur sans aucun envoi serveur.

Conformité Draft-07 & 2020-12

Compatibilité totale avec les spécifications JSON Schema, incluant $defs/definitions, les tuples prefixItems et les enums.

Inférence JSDoc & Contraintes Avancées

Extrait directement @description, @minimum, @maximum, @format, @pattern et @default des commentaires pour des schémas de niveau OpenAPI.

Référence technique et guide d'architecture

Guide Développeur : Générateur de TypeScript Interface vers JSON Schema (Draft-07 & 2020-12) — Guide de référence

Transformez vos interfaces TypeScript, alias de types et commentaires JSDoc en définitions JSON Schema standard pour vos contrats d'API et validateurs de formulaires.

Paramètres clés et contrôles

targetDraftstring

Dialecte cible de la spécification JSON Schema ('draft-07', '2020-12' ou 'draft-04').

Par défaut : draft-07
strictNullChecksboolean

Active la gestion stricte de la nullabilité en distinguant T | null et T | undefined via un tableau de types ou une clause anyOf.

Par défaut : true
topRefboolean

Génère une référence racine $ref pointant vers la définition principale dans $defs ou definitions.

Par défaut : true
additionalPropertiesboolean

Détermine si les schémas d'objets interdisent les propriétés non déclarées en définissant 'additionalProperties: false'.

Par défaut : false
extractCommentsboolean

Analyse les commentaires JSDoc et convertit les tags de validation (@minimum, @maximum, @format, @pattern) en contraintes de schéma.

Par défaut : true

Conseils de pro et bonnes practices

Intégrez des balises JSDoc telles que

Intégrez des balises JSDoc telles que @minimum 1, @maximum 100, @pattern ^[a-z]+$ et @format email dans vos interfaces TypeScript pour produire des contraintes JSON Schema précises sans décorateurs externes.

Draft-07 stocke les sous-types

Draft-07 stocke les sous-types réutilisables sous la clé 'definitions', alors que Draft 2020-12 adopte '$defs'. Assurez-vous que votre moteur de validation (tel qu'Ajv v8 ou jsonschema en Python) prend en charge le dialecte choisi.

Les types union simples

Les types union simples (A | B) se traduisent par anyOf, tandis que les unions discriminées basées sur un champ discriminant commun sont mappées vers oneOf avec const ou enum pour une validation stricte.

Pièges courants et dépannage

Gestion des types récursifs et dépendances circulaires

Activez 'topRef' et la réutilisation des définitions afin que les nœuds récursifs utilisent des pointeurs tels que '#/$defs/TreeNode' ou '#/definitions/TreeNode'.

Types utilitaires complexes (Omit, Pick, Partial) produisant des schémas vides

Normalisez ou simplifiez vos types utilitaires en interfaces intermédiaires explicites pour permettre à l'analyseur AST d'extraire toutes les propriétés.

Foire aux questions (FAQ)

Comment le générateur gère-t-il les champs optionnels (prop?: string) ?▼

En TypeScript, le point d'interrogation indique une propriété facultative. En JSON Schema, les propriétés sont facultatives par défaut, sauf si elles apparaissent dans le tableau 'required'. Avec strictNullChecks, 'prop?: string' est exclu de 'required', tandis que 'prop: string | null' reste dans 'required' avec un type ['string', 'null'].

Quelles balises JSDoc sont converties en règles de validation JSON Schema ?▼

Le texte explicatif alimente le mot-clé 'description'. Les balises telles que @minimum, @maximum, @minLength, @maxLength, @pattern, @format (email, uri, date-time, uuid), @default et @deprecated sont converties en contraintes de validation natives.

Quelles sont les distinctions majeures entre Draft-07 et Draft 2020-12 ?▼

Draft-07 emploie 'definitions' et valide les tuples à l'aide d'un tableau dans 'items'. Draft 2020-12 standardise '$defs', introduit 'prefixItems' pour les tuples et s'intègre harmonieusement avec OpenAPI 3.1.

Peut-on convertir plusieurs interfaces issues d'un même fichier TypeScript ?▼

Oui. En sélectionnant l'interface racine principale, tous les sous-types, énumérations et interfaces référencées sont générés de manière modulaire dans '$defs' ou 'definitions', reliés par des URIs relatives $ref.

Outils et utilitaires connexes

Tous les outils →