Zod — самая известная библиотека проверки в экосистеме TypeScript. С помощью Zod вы создаете схему и проверяете свои данные в соответствии со схемой. Обратите внимание на схему ниже:
import { z } from 'zod' const UserSchema = z.object({ name: z.string().min(1), age: z.number({ coerce: true }).min(18), email: z.string().email(), })
Эту схему можно использовать для проверки объекта следующим образом:
const data = { name: 'John Doe', age: 18, email: '[email protected]', } // 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 способен выполнять различные типы проверок ваших данных, поэтому обязательно прочтите документацию для получения более подробной информации.
Мы можем использовать Zod для проверки значений, присутствующих вprocess.env, и даже обрабатывать их перед использованием переменных среды в нашем приложении. Обычно мне нравится создавать файл Environment.ts, как показано в примере ниже:
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)
Затем просто импортируйте переменную и используйте ее во всем приложении:
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) } })
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3