0Pricing
TypeScript Academy · درس

تأكيدات const وas const

استخدموا as const لاستنتاج الأنواع الحرفية وأنواع الصفوف بدقة

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

ما المقصود بـ as const؟

‏as const هو تأكيد نوع يخبر TypeScript باستنتاج أكثر الأنواع الحرفية تحديدًا الممكنة للتعبير، وجعل جميع الخصائص للقراءة فقط.

const colors = ["red", "green", "blue"] as const;
// type: readonly ["red", "green", "blue"]

منع التوسيع باستخدام as const

من دون as const، تتوسع القيم النصية في المصفوفات والكائنات إلى string. أما باستخدامه، فتبقى أنواعًا حرفية.

const dir1 = { direction: "left" };
// dir1.direction: string

const dir2 = { direction: "left" } as const;
// dir2.direction: "left"

as const مع القيم الحرفية للكائنات

تصبح كل خاصية في كائن يستخدم as const من النوع readonly، وتحتفظ بنوعها الحرفي بشكل تكراري.

const theme = {
  color: "dark",
  sizes: { sm: 8, md: 16 },
} as const;
// theme.color: "dark", theme.sizes.sm: 8 (all readonly)

as const لأنواع الصفوف

تصبح المصفوفات التي تستخدم as const صفوفًا للقراءة فقط ذات عناصر حرفية الأنواع — وهو أمر مفيد لتعريف قوائم معاملات ثابتة.

const args = [1, "hello", true] as const;
// type: readonly [1, "hello", true]

اشتقاق أنواع الاتحادات من as const

نمط شائع: عرّف مصفوفة قيم باستخدام as const، ثم اشتق نوع اتحاد منها باستخدام typeof والوصول المفهرس.

const STATUSES = ["pending", "active", "done"] as const;
type Status = typeof STATUSES[number];
// type Status = "pending" | "active" | "done"

as const في معاملات الدوال

يمكنك استخدام as const مباشرةً عند استدعاء الدوال للحفاظ على الأنواع الحرفية عبر حدود الاستدعاء.

function setMode(mode: "dark" | "light") {}
setMode("dark" as const); // safe, preserves literal

التكرار باستخدام للقراءة فقط

يطبّق as const النوع Readonly بشكل تكراري. فتصبح الكائنات والمصفوفات المتداخلة كلها للقراءة فقط، ما يمنع التعديلات العميقة.

const config = { db: { host: "localhost", port: 5432 } } as const;
// config.db.port = 5433; // Error: readonly

as const مقابل Object.freeze

‏as const تأكيد وقت ترجمة — ولا يوفر حماية أثناء التشغيل. أما Object.freeze فيعمل أثناء التشغيل. ويؤدي كل منهما دورًا مكملًا للآخر.

const obj = Object.freeze({ x: 1 }); // runtime immutability
const obj2 = { x: 1 } as const;      // compile-time literal types

تأكيدات Const مقابل تعليقات الأنواع

يؤدي تعليق النوع إلى توسيع النوع: فالتعبير const x: string = "hi" يمنح string نوعًا. أما as const فيضيّق النوع: فالتعبير const x = "hi" as const يمنح "hi".

const a: string = "hi"; // type: string
const b = "hi" as const; // type: "hi"

استخدام عملي: كائنات شبيهة بـ Enum

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

const Direction = { Up: "UP", Down: "DOWN" } as const;
type Direction = typeof Direction[keyof typeof Direction];
// "UP" | "DOWN"

مراجعة سريعة: as const

يجعل as const TypeScript يستنتج أنواعًا حرفية، ويعامل جميع الخصائص على أنها للقراءة فقط. وهو ضروري لاشتقاق أنواع اتحاد دقيقة من المصفوفات وإنشاء كائنات إعدادات آمنة.

اختبار سريع

ماذا يفعل as const بالمصفوفة؟

ما تعلّمتموه

تُعدّ as const أداة قوية لتثبيت الأنواع الحرفية، وإنشاء بُنى للقراءة فقط، واشتقاق أنواع اتحاد دقيقة من المصفوفات. وهي من الركائز الأساسية لأنماط TypeScript المتقدمة.

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

هل درس «تأكيدات const وas const» مجاني؟

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

ماذا ستتعلم في «تأكيدات const وas const»؟

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

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

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

كم من الوقت يستغرق درس «تأكيدات const وas const»؟

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

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

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

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

  1. آليات توسيع الأنواع وتضييقها
  2. تحديد النوع السياقي: الاستدلال من السياق
  3. التحقق من الخصائص الزائدة وحداثة الكائنات
  4. تأكيدات const وas const
← العودة إلى TypeScript Academy