0Pricing
TypeScript Academy · درس

الكتابة وفق أنماط السلاسل (معاملات المسارات وأسماء الأحداث)

قيّد السلاسل باستخدام أنواع القوالب الحرفية: أنماط معاملات المسارات، ومساحات أسماء الأحداث، والمنشئات الآمنة.

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

مقدمة

الهدف: نمذجة تنسيقات السلاسل النصية في الأنواع. باستخدام أنواع القوالب الحرفية، يمكنكم فرض أنماط مثل "/users/:id" أو "user:created" مع الحفاظ على تجربة تطوير ممتازة.

  • تقييد السلاسل النصية حسب البادئة أو اللاحقة
  • استخراج الأجزاء باستخدام infer
  • إنشاء مساعدين آمنين

معاملات المسار

أنشئوا قالب مسار بسيطًا واستنتجوا اسم المعامل؛ واستخدموا never في الحالات التي لا تلتزم بالقاعدة.

type Route = `/${string}`

type RouteWithParam = `/${string}/:${string}`

type ParamOf<R extends string> = R extends `${string}/:${infer P}` ? P : never

// examples
type A = ParamOf<"/users/:id">      // "id"
type B = ParamOf<"/posts/:slug">    // "slug"

مساعد مسار آمن

منشئ آمن: تقبل الدالة المساعدة القوالب التي تبدأ بـ "/"؛ أما القوالب الأخرى فتُرفض أثناء الترجمة.

type Path<R extends string> = R extends `/${string}` ? R : never

function route<R extends Path<R>>(r: R) { return r }

const ok = route("/users/:id")    // ok
// const bad = route("users")      // error: must start with "/"

مساحات أسماء الأحداث

قيّدوا البادئات (مثل user: وorder:) وامنعوا أسماء الحقول غير الصالحة باستخدام الأنواع.

type EventName = `user:${string}` | `order:${string}`

function on<E extends EventName>(name: E, cb: (data: unknown) => void) {
  // ... register listener
}

on("user:created", d => {})     // ok
// on("payment:done", d => {})  // error: not an EventName

تقسيم الحدث

استخرجوا القسمين باستخدام infer وحوّلوهما إلى حقول ذات أنواع؛ وبذلك لن تحدث تنسيقات غير صالحة.

type SplitEvent<E extends string> = E extends `${infer Scope}:${infer Action}` ? { scope: Scope; action: Action } : never

type S = SplitEvent<"user:created">   // { scope: "user"; action: "created" }

type Bad = SplitEvent<"oops">          // never

نصائح

نصائح:

أبقوا القيود محدودة؛ فالقوالب الصارمة أكثر من اللازم تفرض إعادة الهيكلة.

اجمعوا القواعد في مكان واحد باستخدام دوال Builder.

لا تنسوا تحويل السلسلة النصية الأساسية إلى بيانات unknown والتحقق منها أثناء التشغيل.

التحقق من مساحات الأسماء

تحقق سريع: ما النمط الذي يقيّد أسماء الأحداث إلى مساحتي أسماء؟

مراجعة

مراجعة: قيّدوا السلاسل النصية ذات القوالب باستخدام أنواع القوالب الحرفية؛ واستخرجوا الأجزاء باستخدام infer؛ وأنشئوا دوال منشئة آمنة.

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

هل درس «الكتابة وفق أنماط السلاسل (معاملات المسارات وأسماء الأحداث)» مجاني؟

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

ماذا ستتعلم في «الكتابة وفق أنماط السلاسل (معاملات المسارات وأسماء الأحداث)»؟

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

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

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

كم من الوقت يستغرق درس «الكتابة وفق أنماط السلاسل (معاملات المسارات وأسماء الأحداث)»؟

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

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

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

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

  1. الأنواع المُحوّلة باستخدام +/-readonly و +/-?
  2. إعادة تعيين المفاتيح وأنواع القوالب الحرفية
  3. الكتابة وفق أنماط السلاسل (معاملات المسارات وأسماء الأحداث)
← العودة إلى TypeScript Academy