JSON → TypeBox

Générateur de schéma JSON vers TypeBox (Fournisseur de types JSON Schema rapide)

Convertissez des structures JSON en définitions TypeBox Type.Object haute performance pour Fastify, Ajv et la validation TypeScript à l'exécution.

Préréglages :
Root:
20 PropriétésProfondeur : 3
Charge utile JSON source
import { Type, Static } from '@sinclair/typebox';

UserProfileSchema = Type.Object({
  id: Type.String(),
  email: Type.String({ format: 'email' }),
  username: Type.String(),
  displayName: Type.String(),
  role: Type.String(),
  isVerified: Type.Boolean(),
  tenant: Type.Object({
    id: Type.String(),
    name: Type.String(),
    tier: Type.String(),
    activeSeats: Type.Integer(),
    billingContact: Type.String({ format: 'email' }),
  }),
  preferences: Type.Object({
    theme: Type.String(),
    notificationsEnabled: Type.Boolean(),
    locale: Type.String(),
    timezone: Type.String(),
  }),
  tags: Type.Array(Type.String()),
  lastLoginAt: Type.String({ format: 'date-time' }),
  createdAt: Type.String({ format: 'date-time' }),
});

UserProfile = Static<typeof UserProfileSchema>;
20
Propriétés déduites
Niveau 3
Profondeur max de la hiérarchie AST
~35M ops/s
Vitesse JIT TypeCompiler

Génération instantanée de schémas TypeBox

Analyse n'importe quel JSON en définitions statiques Type.Object de TypeBox avec détection automatique des formats UUID, horodatages ISO et e-mails.

Confidentialité 100% côté client

Aucun envoi vers un serveur. Vos charges utiles JSON, schémas d'API et modèles de données sont traités exclusivement dans le bac à sable de votre navigateur.

Intégration native Fastify et Ajv

Génère des types 100% compatibles JSON Schema Draft-07/2020-12 avec inférence Static<typeof T>, rapidité JIT TypeCompiler et intégration Fastify.

Référence technique et guide d'architecture

Générateur de Schémas JSON vers TypeBox - Guide Développeur — Guide de référence

Convertissez des structures JSON en définitions TypeBox Type.Object haute performance pour Fastify, Ajv et la validation TypeScript à l'exécution.

Paramètres clés et contrôles

Type.ObjectConstructeur de schéma (Object)

Génère une définition d'objet conforme aux spécifications JSON Schema avec propriétés typées, contraintes optionnelles et inférence de type statique TypeScript.

Par défaut : Type.Object({ ... })
Static<typeof T>Utilitaire de type TypeScript

Extrait l'interface statique TypeScript à la compilation directement depuis un schéma TypeBox à l'exécution, éliminant les doublons de déclaration.

Par défaut : type User = Static<typeof UserSchema>
TypeCompiler.CompileCompilateur JIT (Validation)

Compile un schéma TypeBox en une fonction de validation JavaScript ultra-rapide par génération de code et optimisation JIT sous V8.

Par défaut : const C = TypeCompiler.Compile(T)
Type.OptionalModificateur de schéma

Marque une propriété comme facultative, l'omettant du tableau required de JSON Schema et la typant en (key?: T) sous TypeScript.

Par défaut : Type.Optional(Type.String())
additionalPropertiesOption de schéma (boolean)

Détermine si les propriétés non répertoriées sont acceptées lors de la validation, prévenant les attaques par pollution de prototype et garantissant la stricte conformité API.

Par défaut : additionalProperties: false

Conseils de pro et bonnes practices

Combinez

Combinez @fastify/type-provider-typebox avec fastify.withTypeProvider<TypeBoxTypeProvider>(). Fastify exploite un schéma TypeBox unique pour la validation Ajv, la sérialisation ultra-rapide via fast-json-stringify et la documentation Swagger/OpenAPI sans redéclaration d'interfaces.

Dans les APIs à fort trafic

Dans les APIs à fort trafic, n'exécutez jamais Value.Check() et ne recompilez pas de schémas au sein des gestionnaires de requêtes. Précompilez-les au démarrage du serveur avec TypeCompiler.Compile(Schema) pour bénéficier de fonctions optimisées par le moteur JIT V8 jusqu'à 100 fois plus rapides.

Activez { additionalProperties

Activez { additionalProperties: false } sur les schémas racines et imbriqués des points d'accès publics afin de rejeter les charges utiles contenant des champs imprévus et vous prémunir contre les vulnérabilités d'assignation de masse.

Spécifiez des formats reconnus comme

Spécifiez des formats reconnus comme Type.String({ format: 'uuid' }) ou Type.String({ format: 'date-time' }). TypeBox intègre ces métadonnées directement dans le JSON Schema sous-jacent, assurant une validation rigoureuse par Ajv et une documentation Swagger fidèle.

Pièges courants et dépannage

L'inférence de type statique renvoie any ou TypeScript lève une erreur TS2589 de profondeur d'instanciation

Assurez-vous que @sinclair/typebox est à jour en version >= 0.31.0. Pour les schémas récursifs ou autoréférentiels, utilisez toujours le wrapper Type.Recursive(This => Type.Object({ ... })) pour permettre au compilateur TypeScript d'évaluer correctement les types récursifs.

Les propriétés optionnelles refusent les valeurs null ou échouent lors de la validation Ajv

En JSON Schema, omettre une propriété n'est pas équivalent à recevoir une valeur null. Si la clé est facultative, déclarez Type.Optional(Type.String()). Si elle accepte la valeur null, déclarez Type.Union([Type.String(), Type.Null()]). Pour cumuler omission et valeur nulle : Type.Optional(Type.Union([Type.String(), Type.Null()])).

Pics de latence occasionnés par la compilation lors du traitement des requêtes

L'appel TypeCompiler.Compile() génère du code exécutable via new Function(). Ne faites jamais cette compilation dans vos routes HTTP ; stockez les validateurs précompilés dans des constantes de module lors du démarrage de l'application.

Foire aux questions (FAQ)

En quoi TypeBox se différencie-t-il de Zod, Yup ou Joi ?▼

Contrairement à Zod, Yup ou Joi qui reposent sur des moteurs et grammaires propriétaires, TypeBox produit des objets conformes à la norme JSON Schema (Draft-07 / 2020-12) tout en fournissant une inférence statique complète (Static<typeof T>). Associé à TypeCompiler ou Ajv, ses performances surpassent très largement celles de Zod (souvent 10 à 100 fois plus rapide) avec une compatibilité OpenAPI native.

Peut-on exporter des schémas TypeBox en schémas JSON standard ?▼

Oui. Les schémas TypeBox sont déjà des objets JSON Schema natifs lors de l'exécution. Un simple appel à JSON.stringify(Schema) génère un schéma JSON Draft-07 ou 2020-12 prêt à être consommé par Ajv, Swagger ou tout autre validateur standard.

Comment extraire les types TypeScript d'un schéma TypeBox ?▼

Importez l'utilitaire Static de @sinclair/typebox et appliquez-le : type MonType = Static<typeof MonSchema>;. Le type inféré reflète fidèlement la structure, préservant les modificateurs de champs obligatoires, facultatifs, nuls et unions avec une sécurité statique absolue.

TypeBox prend-il en charge les types Date et BigInt ?▼

Oui, TypeBox propose Type.Date() et Type.BigInt(). Toutefois, le standard JSON ne supportant pas nativement ces types, il est recommandé pour les APIs REST d'utiliser Type.String({ format: 'date-time' }) pour les dates ISO 8601 et Type.Integer() pour préserver l'interopérabilité.

TypeBox fonctionne-t-il entièrement dans le navigateur sans dépendance serveur ?▼

Oui. TypeBox ne requiert aucune dépendance externe (Zero Dependencies) et s'exécute de façon autonome dans les navigateurs modernes, Node.js, Deno, Bun et Cloudflare Workers avec une empreinte minime (~15 Ko minifié).

Outils et utilitaires connexes

Tous les outils →
Générateur de Migration Prisma Schema vers SQL DDLDéveloppement

Guide technique pour convertir des schémas Prisma en scripts SQL DDL compatibles PostgreSQL, MySQL et SQLite.

Ouvrir l'outil→
Guide Développeur : Générateur d'Interfaces et Types TypeScript depuis Prisma SchemaDéveloppement

Extrayez les modèles, énumérations, champs optionnels et relations de votre schéma Prisma sous forme d'interfaces TypeScript autonomes sans dépendance au runtime Prisma Client.

Ouvrir l'outil→
Guide Développeur : Générateur de Client API Axios TypeScript depuis OpenAPI et SwaggerDéveloppement

Générez des fonctions de client HTTP Axios sécurisées et typées ainsi que des interfaces de paramètres à partir de spécifications OpenAPI 3.0 et Swagger JSON/YAML.

Ouvrir l'outil→
Guide Développeur du Générateur de Client TypeScript Fetch Natif depuis OpenAPI & SwaggerDéveloppement

Générez des clients d'API TypeScript en fetch natif sans dépendance externe, avec sérialisation des requêtes, en-têtes et typage complet.

Ouvrir l'outil→
Guide Développeur : Générateur de DDL SQL CREATE TABLE depuis Schéma Drizzle ORMDéveloppement

Traduisez fidèlement les définitions pgTable, mysqlTable et sqliteTable de Drizzle ORM en scripts de migration SQL CREATE TABLE exécutables.

Ouvrir l'outil→
Guide de développement pour le générateur de workflows YAML GitHub Actions CI/CDDéveloppement

Créez des pipelines YAML GitHub Actions prêts pour la production pour Node.js, Go, Python, conteneurs Docker, tests unitaires et déploiements automatisés.

Ouvrir l'outil→