TypeScript Academy · درس

التحقق من المخططات باستخدام zod والاستنتاج إلى TS

تحقق من الطلبات باستخدام zod، واستنتج أنواع TypeScript من المخططات، وأضف برمجيات وسيطة ومعالجة أخطاء آمنة.

الدرس 2 من 38 خطوة

التحقق من المخططات باستخدام zod والاستنتاج إلى TS درس مجاني في TypeScript Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في TypeScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة TypeScript Academy 3 دروس في المجموع.

مقدمة

الهدف: تحقّق من البيانات الواردة باستخدام zod، وحافظ على اتساق أنواع TypeScript عبر z.infer. ستُحلّل البيانات بأمان، وترسل أخطاء مفيدة، وتدمج التحقق في البرمجيات الوسيطة.

  • تعريف المخططات مرة واحدة
  • استنتاج أنواع TS
  • safeParse + أخطاء 400

المخطط والاستنتاج

نمذج البيانات مرة واحدة باستخدام zod. ويطابق النوع المشتق type User = z.infer<typeof userSchema> عملية التحقق تمامًا.

import { z } from "zod"

export const userSchema = z.object({
  id: z.string().regex(/^u_[a-z0-9]+$/),
  name: z.string().min(1),
  age: z.number().int().nonnegative().optional()
})

export type User = z.infer<typeof userSchema>

// Reuse `User` across handlers, services, and tests

safeParse في المعالج

استخدم safeParse لتجنّب الاستثناءات؛ وأرجع 400 مع مشكلات منسّقة. ويعكس نوع الاستجابة شكلَي النجاح والخطأ.

import { Request, Response } from "express"
import { userSchema, User } from "./schema"

export function createUser(req: Request<{}, User, unknown>, res: Response<User | { error: string; issues?: unknown }>) {
  const parsed = userSchema.safeParse(req.body)
  if (!parsed.success) {
    return res.status(400).json({ error: "Invalid body", issues: parsed.error.format() })
  }
  const user = parsed.data
  return res.status(201).json(user)
}

مساعد البرمجيات الوسيطة

أنشئ برمجية وسيطة قابلة لإعادة الاستخدام. فهي تحلّل الجسم، ثم تُرفق البيانات ذات النوع المحدد أو تعيد 400 مع التفاصيل.

import { z } from "zod"
import { Request, Response, NextFunction } from "express"

export function validateBody<T extends z.ZodTypeAny>(schema: T) {
  return (req: Request, res: Response, next: NextFunction) => {
    const r = schema.safeParse(req.body)
    if (!r.success) {
      return res.status(400).json({ error: "Invalid body", issues: r.error.format() })
    }
    req.body = r.data
    next()
  }
}

التحويل القسري و refine

استخدم z.coerce لقبول الأرقام على هيئة سلاسل نصية، وz.enum للقيم المعروفة، و.refine للقواعد التي تمتد عبر عدة حقول.

import { z } from "zod"

const signupSchema = z.object({
  email: z.string().email(),
  age: z.coerce.number().int().gte(13),
  role: z.enum(["user", "admin"]).default("user")
}).refine(v => v.role !== "admin" || v.age >= 18, { message: "admin must be adult" })

export type Signup = z.infer<typeof signupSchema>

// Coercion allows numbers in strings; refine adds cross-field rules

نصائح حول الأخطاء

نصائح حول الأخطاء:

  • استخدم safeParse دائمًا عند حدود النظام.
  • نسّق رسائل المشكلات للعملاء، وتجنب تسريب تتبعات المكدس.
  • ضيّق unknown إلى ZodError إذا التقطت أخطاء التحليل المُلقاة.

التحقق من استدلال zod

تحقق سريع: كيف تحافظ على تزامن أنواع TS مع مخططات zod؟

خلاصة

خلاصة: عرّف مخططًا واحدًا، واستنتج نوع TS، وتحقق باستخدام safeParse، ثم اربطه بالبرمجيات الوسيطة للحصول على أخطاء 400 متسقة.

البدء مجانًا

تعلم TypeScript مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
101
الدروس
352

الأسئلة الشائعة

هل درس «التحقق من المخططات باستخدام zod والاستنتاج إلى TS» مجاني؟

نعم — نص درس «التحقق من المخططات باستخدام zod والاستنتاج إلى TS» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة TypeScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة TypeScript Academy 3 دروس في المجموع.

ماذا ستتعلم في «التحقق من المخططات باستخدام zod والاستنتاج إلى TS»؟

تحقق من الطلبات باستخدام zod، واستنتج أنواع TypeScript من المخططات، وأضف برمجيات وسيطة ومعالجة أخطاء آمنة. تتمرن على TypeScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ TypeScript Academy؟

لا تُشترط خبرة سابقة. TypeScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «التحقق من المخططات باستخدام zod والاستنتاج إلى TS»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس TypeScript Academy هذا؟

نعم. كل درس في TypeScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنواع معالجات الموجّه و Request/Response
  2. التحقق من المخططات باستخدام zod والاستنتاج إلى TS
  3. البرمجيات الوسيطة للأخطاء وأنواع Result
← العودة إلى TypeScript Academy