0Pricing
TypeScript Academy · درس

عامل النوع typeof

استخرجوا نوع قيمة وقت التشغيل باستخدام typeof

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

الأنواع المشتقة من القيم

يشتق عامل النوع typeof نوعًا ثابتًا من قيمة وقت التشغيل. يتيح لك ذلك كتابة القيمة مرة واحدة وإعادة استخدام بنيتها كنوع، مع إبقاء الاثنين متزامنين تمامًا.

وظيفتا typeof المختلفتان

لا تخلط بينهما: يعيد typeof في JavaScript سلسلة نصية وقت التشغيل، بينما يظهر typeof في TypeScript في موضع نوع وينتج نوعًا. الكلمة المفتاحية واحدة، لكن السياق مختلف.

const n = 42
console.log(typeof n) // "number" — JS runtime
type T = typeof n     // number — TS type position

التقاط نوع متغير

ضع typeof قبل قيمة في تعليق نوع لالتقاط النوع الذي استنتجه TypeScript لتلك القيمة. يصبح T هنا من النوع string.

const greeting = "hello"
type G = typeof greeting // string
const another: G = "world"
console.log(another)

التقاط بنية كائن

عند تطبيق typeof على كائن معرّف باستخدام const، تحصل على بنيته الكاملة المستنتجة، فلا حاجة إلى كتابة الواجهة يدويًا.

const config = { host: "localhost", port: 8080 }
type Config = typeof config // { host: string; port: number }
const c: Config = { host: "127.0.0.1", port: 3000 }
console.log(c)

يوسّع الاستدلال الأنواع افتراضيًا

من دون مساعدة، يوسّع TypeScript الأنواع الحرفية: يصبح port: 8080 من النوع number، وليس من النوع الحرفي 8080. يكون ذلك مناسبًا غالبًا، لكن قد ترغب أحيانًا في الحفاظ على القيمة الدقيقة.

const settings = { mode: "dark" }
type S = typeof settings // { mode: string }
const x: S = { mode: "anything" }
console.log(x)

typeof مع as const

أضف as const لتثبيت قيمة في أضيق نوع حرفي لها. عندها يلتقط typeof القيم الحرفية الدقيقة، ويضع علامة readonly على كل شيء.

const settings = { mode: "dark" } as const
type S = typeof settings // { readonly mode: "dark" }
const x: S = { mode: "dark" }
console.log(x)

الأنواع الحرفية من المصفوفات

باستخدام as const، ينتج typeof المطبّق على مصفوفة tuple للقراءة فقط من الأنواع الحرفية، وهي لبنة أساسية لاشتقاق اتحادات القيم.

const roles = ["admin", "editor", "viewer"] as const
type Roles = typeof roles // readonly ["admin", "editor", "viewer"]
console.log(roles[0])

اشتقاق اتحاد من القيم

اجمع بين typeof والوصول المفهرس باستخدام [number] لتحويل مصفوفة من الثوابت إلى نوع اتحاد لقيمها.

const roles = ["admin", "editor", "viewer"] as const
type Role = typeof roles[number] // "admin" | "editor" | "viewer"
const r: Role = "editor"
console.log(r)

typeof مع الدوال

يمكنك التقاط نوع دالة أيضًا. ويفيد ذلك في تحديد أنواع الأغلفة أو إعادة استخدام توقيع في موضع آخر.

function add(a: number, b: number) { return a + b }
type AddFn = typeof add // (a: number, b: number) => number
const myAdd: AddFn = (x, y) => x + y
console.log(myAdd(2, 3))

الحفاظ على تزامن الأنواع

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

const defaults = { retries: 3, timeout: 1000 }
type Defaults = typeof defaults
function apply(opts: Defaults) { return opts.retries }
console.log(apply(defaults))

يعمل فقط مع المعرّفات

يقبل عامل النوع typeof معرّفًا أو مسار خاصية، وليس تعبيرًا عشوائيًا. لا يُسمح باستخدام typeof (a + b).

const obj = { user: { name: "Ada" } }
type Name = typeof obj.user.name // string
const n: Name = "Leo"
console.log(n)

اختبار سريع

اختبر مدى فهمك لعامل النوع typeof.

مراجعة

يشتق عامل النوع typeof، عند استخدامه في موضع نوع، نوعًا من قيمة، سواء كانت متغيرًا أو كائنًا أو مصفوفة أو دالة. تتوسع الأنواع الحرفية افتراضيًا؛ أضف as const لالتقاط الأنواع الحرفية الدقيقة بصفتها للقراءة فقط. وبدمجه مع الوصول المفهرس (typeof arr[number]) تحصل على اتحادات القيم. يؤدي اشتقاق الأنواع من القيم إلى الحفاظ على مصدر واحد للحقيقة وتجنّب تكرار البنى.

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

هل درس «عامل النوع typeof» مجاني؟

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

ماذا ستتعلم في «عامل النوع typeof»؟

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

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

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

كم من الوقت يستغرق درس «عامل النوع typeof»؟

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

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

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

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

  1. عامل النوع typeof
  2. عامل النوع keyof
  3. أنواع الوصول المفهرس
  4. دمج typeof وkeyof
← العودة إلى TypeScript Academy