0Pricing
TypeScript Academy · درس

أنواع الوصول المفهرس

ابحثوا عن أنواع الخصائص باستخدام الصيغة T[K]

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

البحث عن أنواع الخصائص

تتيح لك أنواع الوصول المفهرس البحث عن نوع خاصية باستخدام صيغة الأقواس في موضع نوع: Obj['prop']. يشبه ذلك قراءة قيمة، لكن على مستوى النوع.

الوصول المفهرس الأساسي

افهرس نوعًا باستخدام مفتاح حرفي لاستخراج نوع تلك الخاصية. يعطي User['name'] النوع string.

interface User { id: number; name: string }
type NameType = User["name"] // string
const n: NameType = "Ada"
console.log(n)

لماذا لا نكتب النوع مباشرةً

يحافظ الوصول المفهرس على تزامن الأنواع. فإذا تغيّر User.name من string إلى نوع آخر، تتحدّث كل استخدامات User['name'] تلقائيًا، من دون تعديلات يدوية.

interface Product { price: { amount: number; currency: string } }
type Price = Product["price"] // { amount: number; currency: string }
const p: Price = { amount: 10, currency: "USD" }
console.log(p)

الوصول باستخدام اتحاد من المفاتيح

استخدم اتحادًا من المفاتيح للفهرسة للحصول على اتحاد من أنواع قيمها. ينتج عن User['id' | 'name'] النوع number | string.

interface User { id: number; name: string }
type IdOrName = User["id" | "name"] // number | string
const v: IdOrName = 5
console.log(v)

Obj[keyof Obj] لجميع القيم

استخدم keyof Obj للفهرسة للحصول على اتحاد من أنواع جميع القيم في الكائن، أي مجموعة أنواع قيمه الكاملة.

interface Config { host: string; port: number; secure: boolean }
type Values = Config[keyof Config] // string | number | boolean
const v: Values = true
console.log(v)

نوع عنصر المصفوفة باستخدام [number]

بالنسبة إلى نوع مصفوفة، استخدم number للفهرسة للحصول على نوع عناصرها. يكون string[][number] من النوع string.

type Names = string[]
type Item = Names[number] // string
const x: Item = "Ada"
console.log(x)

نوع عنصر tuple

تؤدي فهرسة tuple باستخدام number إلى الحصول على اتحاد جميع أنواع عناصرها، وهو مفيد لاشتقاق نوع قيمة من قائمة ثابتة.

type Pair = [string, number]
type Element = Pair[number] // string | number
const e: Element = 42
console.log(e)

الدمج مع typeof

استخدم typeof لفهرسة نوع قيمة. وبالاقتران مع [number] على مصفوفة as const، يشتق ذلك اتحادًا من القيم الحرفية للمصفوفة.

const colors = ["red", "green", "blue"] as const
type Color = typeof colors[number] // "red" | "green" | "blue"
const c: Color = "green"
console.log(c)

الوصول المفهرس المتداخل

سلسل عمليات البحث للتعمق في الأنواع المتداخلة. ينزل كل قوس مربع مستوىً واحدًا داخل البنية.

interface Data { user: { profile: { age: number } } }
type Age = Data["user"]["profile"]["age"] // number
const a: Age = 36
console.log(a)

الوصول المفهرس في الأنواع العامة

يُعد النمط T[K] مع K extends keyof T المحرك وراء دوال getter الآمنة نوعيًا: فنوع الإرجاع هو تمامًا نوع الخاصية التي جرى البحث عنها.

function get<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key]
}
const port = get({ host: "x", port: 80 }, "port")
console.log(port) // 80, typed as number

اشتقاق عملي

يمنع الوصول المفهرس تكرار الأنواع؛ إذ يشتق نوع وسيط الدالة مباشرةً من كائن المجال بدلًا من إعادة تعريفه.

interface Order { items: { sku: string; qty: number }[] }
type LineItem = Order["items"][number] // { sku: string; qty: number }
const li: LineItem = { sku: "A1", qty: 2 }
console.log(li)

تحقق سريع

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

مراجعة

تبحث أنواع الوصول المفهرس (Obj['prop']) عن نوع خاصية، وتبقى متزامنة مع المصدر. استخدم اتحادًا من المفاتيح للفهرسة للحصول على اتحاد من أنواع القيم، واستخدم keyof Obj لجميع القيم، وnumber لأنواع عناصر المصفوفات أو الصفوف. سَلْسِل الأقواس لعمليات البحث المتداخلة، وادمج ذلك مع typeof والأنواع العامة (T[K]) للاشتقاقات الآمنة نوعيًا.

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

هل درس «أنواع الوصول المفهرس» مجاني؟

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

ماذا ستتعلم في «أنواع الوصول المفهرس»؟

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

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

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

كم من الوقت يستغرق درس «أنواع الوصول المفهرس»؟

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

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

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

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

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