tRPC End-to-End Type Safe APIs · درس

تحويل بيانات Zod وتنقيحها

تجاوز التحقق الأساسي عبر تحويل القيم المحللة وإضافة قواعد تنقيح مخصصة باستخدام Zod.

الدرس 4 من 413 خطوة

تحويل بيانات Zod وتنقيحها درس مجاني في tRPC End-to-End Type Safe APIs على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في tRPC End-to-End Type Safe APIs، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة tRPC End-to-End Type Safe APIs 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Beyond Pass/Fail

Zod does more than accept or reject data. It can transform valid input into a cleaner shape and apply custom rules that built-in validators cannot express.

The transform Method

.transform() changes a value after it passes validation, producing a new output type.

const trimmed = z.string().transform((s) => s.trim());
trimmed.parse("  hi  "); // "hi"

Coercing Types

Zod can coerce inputs, useful for query strings that arrive as text but should be numbers.

const page = z.coerce.number().int().positive();
page.parse("5"); // 5 as a number

Default Values

Provide a fallback when a field is missing.

const schema = z.object({
  limit: z.number().default(20),
});
schema.parse({}); // { limit: 20 }

Custom Refinements

.refine() adds a custom boolean check with a message when it fails.

const password = z.string().refine(
  (val) => val.length >= 8,
  { message: "Too short" }
);

Cross-Field Validation

Refine an object to compare two fields, like confirming a password.

const form = z.object({
  pw: z.string(),
  confirm: z.string(),
}).refine((d) => d.pw === d.confirm, {
  message: "Passwords must match",
  path: ["confirm"],
});

superRefine for Multiple Errors

.superRefine() lets you push several issues in one pass for richer validation.

const s = z.string().superRefine((val, ctx) => {
  if (!/[A-Z]/.test(val)) ctx.addIssue({ code: "custom", message: "Need uppercase" });
  if (!/[0-9]/.test(val)) ctx.addIssue({ code: "custom", message: "Need digit" });
});

Chaining Transforms

Validation and transformation chain in order.

const slug = z.string()
  .min(1)
  .transform((s) => s.toLowerCase().replace(/\s+/g, "-"));
slug.parse("Hello World"); // "hello-world"

Input vs Output Types

After a transform, the input type and output type differ. Use z.input and z.output to read each.

type In = z.input<typeof page>;   // string | number
type Out = z.output<typeof page>; // number

Safe Parsing

Use safeParse to get a result object instead of throwing, ideal for handling errors gracefully.

const r = password.safeParse("short");
if (!r.success) console.log(r.error.issues);

Pipe for Validate-then-Transform

Use .pipe() to first coerce or transform a value and then run further validation on the result.

const id = z.string().transform(Number).pipe(z.number().int());

Quick Check

Test your Zod knowledge.

Recap

You leveled up your Zod schemas:

  • transform and coerce reshape valid data
  • refine / superRefine add custom and cross-field rules
  • safeParse handles errors without throwing

These tools turn Zod into a powerful data shaping and validation layer.

البدء مجانًا

تعلم tRPC End-to-End Type Safe APIs مع معلم ذكاء اصطناعي — مجانًا

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

الدورات
10
الدروس
40

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

هل درس «تحويل بيانات Zod وتنقيحها» مجاني؟

نعم — نص درس «تحويل بيانات Zod وتنقيحها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة tRPC End-to-End Type Safe APIs، انتقل إلى CoddyKit PRO. تتضمن دورة tRPC End-to-End Type Safe APIs 4 دروس في المجموع.

ماذا ستتعلم في «تحويل بيانات Zod وتنقيحها»؟

تجاوز التحقق الأساسي عبر تحويل القيم المحللة وإضافة قواعد تنقيح مخصصة باستخدام Zod. تتمرن على tRPC End-to-End Type Safe APIs مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ tRPC End-to-End Type Safe APIs؟

لا تُشترط خبرة سابقة. tRPC End-to-End Type Safe APIs على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تحويل بيانات Zod وتنقيحها»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس tRPC End-to-End Type Safe APIs هذا؟

نعم. كل درس في tRPC End-to-End Type Safe APIs يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. مقدمة إلى مخططات Zod
  2. تعريف مخططات Zod المعقّدة
  3. دمج Zod في إجراءات tRPC
  4. تحويل بيانات Zod وتنقيحها
← العودة إلى tRPC End-to-End Type Safe APIs