À propos du projet
Zod est une bibliothèque de validation axée sur TypeScript. Vous définissez un schéma, analysez des données avec celui-ci et recevez un résultat fortement typé et validé. Il fonctionne dans Node.js et les navigateurs modernes, n'a aucune dépendance externe et fournit un petit bundle de base (environ 2 Ko compressé en gzip). L'API est immuable : les méthodes retournent une nouvelle instance plutôt que de modifier le schéma existant. Il peut être utilisé à partir de TypeScript ou de JavaScript pur et inclut une conversion JSON Schema intégrée.
L'utilisation de base commence par la définition d'un schéma, par exemple un objet avec un champ chaîne de caractères et un champ nombre. L'appel de `.parse` sur le schéma valide l'entrée et retourne un clone profond fortement typé. Si le schéma utilise des raffinements ou des transformations asynchrones, `.parseAsync()` est requis à la place. Lorsque la validation échoue, `.parse()` lève une `ZodError` contenant des informations granulaires sur le problème, telles que le type attendu, un code d'erreur, le chemin vers le champ problématique et un message. Pour éviter try/catch, `.safeParse()` retourne une union discriminée avec soit les données analysées, soit l'erreur ; `.safeParseAsync()` couvre les schémas asynchrones.
Les types peuvent être déduits des schémas à l'aide de `z.infer<>`. Lorsque les types d'entrée et de sortie divergent, par exemple via `.transform()`, `z.input<>` et `z.output<>` les extraient indépendamment.
Une caractéristique notable est la compilation anticipée. `z.compile(schema)` retourne un clone du schéma avec un chemin rapide compilé pour les entrées valides, tandis que les entrées invalides retombent sur l'analyseur régulier afin que le rapport d'erreurs reste identique. Le README rapporte une accélération médiane de 2,4x sur un benchmark de 55 schémas, évoluant avec la complexité du schéma (les grands tableaux d'objets et les objets à 20 clés autour de 9x, les objets imbriqués autour de 4,5x, tandis qu'un schéma de chaîne simple ne gagne rien). La compilation peut également être activée globalement en important `zod/compile` avant les modules qui définissent des schémas. La compilation utilise `new Function`, et le mode global est automatiquement désactivé lorsque `z.config({ jitless: true })` est défini, par exemple dans les environnements CSP ; appeler `z.compile()` directement est un opt-in explicite. Les schémas avec des raffinements ou transformations asynchrones, et quelques autres constructions, ne peuvent pas être compilés ; dans ce cas, `z.compile()` retourne le schéma inchangé et il continue d'utiliser l'analyseur régulier, sauf si `{ strict: true }` est passé pour lever des erreurs spécifiques. Sur une entrée invalide, les raffinements et transformations peuvent s'exécuter deux fois. Dériver un nouveau schéma à partir d'un schéma compilé retourne un schéma non compilé, donc le schéma final doit être compilé.
L'installation se fait via `npm install zod`. Le projet renvoie à la documentation sur zod.dev, à une communauté Discord et à des canaux sociaux. Il est sous licence MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.