Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الأنواع الحرفية (Literal Types)

جزء من قسم Introduction To TypeScript في رحلة JavaScript على Coddy — الدرس 33 من 73.

أنواع القيم الحرفية (Literal types) تسمح لك بتقييد متغير بقيم دقيقة ومحددة بدلاً من فئات واسعة. فبدلاً من قبول أي سلسلة نصية (string)، يمكنك قصرها على "left" أو "right" أو "up" أو "down" فقط.

يستخدم النوع الحرفي (literal type) القيمة الفعلية كنوع بحد ذاته.

يمكنك إنشاء أنواع حرفية (literal types) للسلاسل النصية، أو الأرقام، أو القيم المنطقية:

let direction: "left" = "left";  // يُسمح فقط بـ "left"
let count: 42 = 42;              // يُسمح فقط بالرقم 42
let isReady: true = true;        // يُسمح فقط بـ true

تصبح أنواع القيم الحرفية (Literal types) قوية عند دمجها مع أنواع الاتحاد (union types)، مما يؤدي إلى إنشاء مجموعة محكومة من القيم المسموح بها. هذا مثالي لسيناريوهات مثل الاتجاهات، أو أكواد الحالة، أو خيارات التكوين:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // صالح
let orderStatus: Status = "pending"; // صالح
// let invalid: Direction = "diagonal"; // خطأ!

يمنحك هذا النهج مرونة الخيارات المتعددة مع الحفاظ على سلامة الأنواع الصارمة. ستقوم TypeScript باكتشاف الأخطاء المطبعية والقيم غير الصالحة في وقت التجميع، مما يجعل كودك أكثر موثوقية من استخدام أنواع السلاسل النصية العامة.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

challenge icon

التحدي

سهل

قم بإنشاء اسم مستعار للنوع (type alias) باسم Direction للأنواع الحرفية (literal types) "left" | "right" | "up" | "down".

قم بإنشاء اسم مستعار للنوع باسم GameState للأنواع الحرفية "menu" | "playing" | "paused" | "gameover".

قم بإنشاء اسم مستعار للنوع باسم Difficulty للأنواع الحرفية "easy" | "medium" | "hard".

الآن قم بالتصريح عن المتغيرات التالية باستخدام أسماء مستعارات الأنواع الخاصة بك:

  • قم بالتصريح عن متغير باسم playerDirection من النوع Direction وقم بتعيين القيمة "up" له
  • قم بالتصريح عن متغير باسم currentState من النوع GameState وقم بتعيين القيمة "playing" له
  • قم بالتصريح عن متغير باسم selectedDifficulty من النوع Difficulty وقم بتعيين القيمة "medium" له

قم بإنشاء دالة باسم movePlayer تقبل معاملًا يسمى direction من النوع Direction وتعيد string. يجب أن تعيد الدالة رسالة بالتنسيق "Moving [direction]".

قم بإنشاء دالة أخرى باسم updateGameState تقبل معاملًا يسمى state من النوع GameState وتعيد string. يجب أن تعيد الدالة رسالة بالتنسيق "Game state: [state]".

قم باستدعاء دوالك باستخدام المتغيرات التي أنشأتها واطبع النتائج:

  • قم باستدعاء movePlayer مع playerDirection واطبع النتيجة
  • قم باستدعاء updateGameState مع currentState واطبع النتيجة
  • اطبع قيمة selectedDifficulty

اطبع كل نتيجة في سطر منفصل بالترتيب المحدد أعلاه.

ورقة مرجعية

تقيد أنواع القيم الحرفية (Literal types) المتغيرات بقيم محددة ودقيقة بدلاً من الفئات الواسعة:

let direction: "left" = "left";  // يُسمح فقط بـ "left"
let count: 42 = 42;              // يُسمح فقط بالرقم 42
let isReady: true = true;        // يُسمح فقط بـ true

ادمج أنواع القيم الحرفية مع أنواع الاتحاد (union types) لإنشاء مجموعات محكومة من القيم المسموح بها:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // صالح
let orderStatus: Status = "pending"; // صالح

يوفر هذا أماناً للأنواع (type safety) من خلال اكتشاف الأخطاء المطبعية والقيم غير الصالحة في وقت التجميع (compile time) مع الحفاظ على المرونة مع خيارات متعددة.

جرّب بنفسك

// TODO: اكتب كودك هنا
// قم بإنشاء أسماء مستعارة للأنواع (type aliases) لكل من Direction و GameState و Difficulty
// قم بالتصريح عن المتغيرات باستخدام الأسماء المستعارة للأنواع الخاصة بك
// قم بإنشاء دالتي movePlayer و updateGameState
// قم باستدعاء الدوال وطباعة النتائج
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Introduction To TypeScript