Zod est la bibliothèque de validation la plus connue de l'écosystème TypeScript. Avec Zod, vous créez un schéma et validez vos données selon le schéma. Observez le schéma ci-dessous :
import { z } from 'zod' const UserSchema = z.object({ name: z.string().min(1), age: z.number({ coerce: true }).min(18), email: z.string().email(), })
Ce schéma peut être utilisé pour valider un objet comme suit :
const data = { name: 'John Doe', age: 18, email: 'john@example.com', } // If there is a validation error, it throws an error const validatedData = UserSchema.parse(data) // If there is a validation error, it returns an error object for you to handle later const safeValidatedData = UserSchema.safeParse(data) // => { success: false; error: ZodError } // => { success: true; data: 'billie' }
Zod est capable d'effectuer différents types de validations sur vos données, alors assurez-vous de lire la documentation pour plus de détails.
Nous pouvons utiliser Zod pour valider les valeurs présentes dans process.env et même les traiter avant d'utiliser les variables d'environnement dans notre application. Habituellement, j'aime créer un fichier environnement.ts, comme dans l'exemple ci-dessous :
import { z } from 'zod' const environmentSchema = z.object({ // Define the possible values for NODE_ENV, always leaving a default value: NODE_ENV: z.enum(['test', 'development', 'production']).default('production'), // Environment variables are always defined as strings. Here, convert the string to a number and set a default value: PORT: z.number({ coerce: true }).default(3000), }) export const env = environmentSchema.parse(process.env)
Ensuite, importez simplement la variable et utilisez-la dans toute mon application :
import Fastify from 'fastify' import { env } from './environment.js' const app = Fastify({ logger: true }) app.listen({ port: env.PORT }, (err) => { if (err) { app.log.error(err) process.exit(1) } })
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!