0Pricing
TypeScript Academy · درس

أنماط satisfies العملية

طبّقوا satisfies على كائنات الإعداد وجداول البحث

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

التحقق من لوحة ألوان

من الأنماط الشائعة استخدام satisfies Record<string, Color> مع لوحة ألوان: إذ يجري التحقق من أن كل قيمة لون صالح، بينما تبقى المفاتيح دقيقة لإتاحة الإكمال التلقائي.

type Color = "red" | "green" | "blue";
const palette = {
  primary: "blue",
  secondary: "green"
} satisfies Record<string, Color>;
console.log(palette.primary);

اكتشاف قيم لوحة الألوان غير الصالحة

إذا لم تكن إحدى القيم Color صالحة، فسيصدر satisfies خطأ، بينما تظل المفاتيح ذات أنواع دقيقة.

type Color = "red" | "green" | "blue";
// const bad = { primary: "purple" } satisfies Record<string, Color>; // Error
const ok = { primary: "red" } satisfies Record<string, Color>;
console.log(ok.primary);

الحفاظ على الإكمال التلقائي للمفاتيح

بما أن المفاتيح المستدل عليها هي "primary" | "secondary"، فسيكملها المحرر تلقائيًا، بخلاف تعليق Record النوعي العادي الذي سيفقد المفاتيح المحددة.

type Color = "red" | "green" | "blue";
const palette = { primary: "red", accent: "blue" } satisfies Record<string, Color>;
// palette.<autocomplete: primary, accent>
console.log(palette.accent);

التحقق من خريطة المسارات

تستفيد خرائط المسارات أيضًا: إذ يجب أن تطابق القيم بنية المعالج، بينما تظل أسماء المسارات معروفة لاستخدامها في الأدوات المساعدة للتنقل.

type Route = { method: "GET" | "POST"; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  login: { method: "POST", path: "/login" }
} satisfies Record<string, Route>;
console.log(routes.login.method);

الفهرسة في الخريطة

مع الحفاظ على المفاتيح، يمكنك إنشاء نوع لأسماء المسارات الصالحة، ثم الفهرسة في نوع الخريطة بأمان نوعي.

type Route = { method: string; path: string };
const routes = {
  home: { method: "GET", path: "/" },
  about: { method: "GET", path: "/about" }
} satisfies Record<string, Route>;
type RouteName = keyof typeof routes; // "home" | "about"
const pick: RouteName = "about";
console.log(routes[pick].path);

إعدادات نوعية بقيم متنوعة

يعمل satisfies أيضًا عندما تكون للقيم بنى مختلفة. قيّدها باستخدام نوع اتحاد، وسيجري التحقق من كل قيمة مقابل ذلك الاتحاد.

type Setting = number | boolean | string;
const config = {
  retries: 3,
  verbose: true,
  region: "eu"
} satisfies Record<string, Setting>;
console.log(config.retries, config.verbose);

جداول بحث شبيهة بالتعدادات

أنشئ جدول بحث يجري التحقق منه مقابل نوع للقيم، مع الحفاظ على دقة كل إدخال لاستخدامه لاحقًا.

type Status = "active" | "inactive";
const userStatus = {
  alice: "active",
  bob: "inactive"
} satisfies Record<string, Status>;
const s: "active" = userStatus.alice;
console.log(s);

الاقتران مع as const

اجمع بين as const وsatisfies للحصول على بيانات ثابتة بعمق ومتحقق منها: إذ يجمّدها as const، ويتحقق منها satisfies.

type Color = "red" | "blue";
const theme = {
  primary: "red",
  secondary: "blue"
} as const satisfies Record<string, Color>;
console.log(theme.primary);

التحقق من النطاقات العددية باستخدام النوع

يمكنك تقييد القيم باتحاد من القيم الحرفية العددية لتمثيل مجموعات خيارات ثابتة، مع التحقق منها وقت التعريف.

type Level = 1 | 2 | 3;
const levels = {
  easy: 1,
  medium: 2,
  hard: 3
} satisfies Record<string, Level>;
console.log(levels.hard);

خريطة لعلامات الميزات

مثال عملي لإعدادات علامات الميزات: المفاتيح هي أسماء العلامات التي يمكن إكمالها تلقائيًا، والقيم منطقية يتحقق منها satisfies.

const flags = {
  newDashboard: true,
  betaSearch: false
} satisfies Record<string, boolean>;
type Flag = keyof typeof flags;
const f: Flag = "betaSearch";
console.log(flags[f]);

لماذا ينجح هذا النمط

في لوحات الألوان والمسارات والعلامات، يوفّر satisfies Record<...> قيمًا متحققًا منها، إلى جانب مفاتيح وقيم حرفية دقيقة؛ وهذا هو الحل العملي الأمثل عادةً للإعدادات النوعية.

type Color = "red" | "green" | "blue";
const ui = { brand: "green", warn: "red" } satisfies Record<string, Color>;
console.log(Object.keys(ui).join(","));

اختبار سريع: الاستخدام العملي لـ satisfies

اختبر فهمك للأنماط العملية لاستخدام satisfies.

مراجعة: أنماط satisfies العملية

طبّقت satisfies Record<string, Color> على لوحات الألوان وخرائط المسارات والعلامات وجداول البحث، مع الحفاظ على المفاتيح والقيم الحرفية الدقيقة للإكمال التلقائي، والتحقق من كل قيمة.

type Color = "red" | "blue";
const theme = { bg: "blue", fg: "red" } satisfies Record<string, Color>;
console.log(theme.bg, theme.fg);

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

هل درس «أنماط satisfies العملية» مجاني؟

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

ماذا ستتعلم في «أنماط satisfies العملية»؟

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

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

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

كم من الوقت يستغرق درس «أنماط satisfies العملية»؟

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

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

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

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

  1. سبب وجود satisfies
  2. satisfies مقابل تعليق النوع
  3. satisfies مقابل تأكيد as
  4. أنماط satisfies العملية
← العودة إلى TypeScript Academy