TYPE ⊆ SET منهج TypeScriptمن الجذور tsc --noEmit ✓
مخرجاتT

شجرة المهارات Skill Tree

الخريطة كاملةً مكشوفة


الآن وقد قطعت الأقاليم التسعة، إليك الخريطة كاملةً مكشوفة. حين بدأت، كانت ضبابية؛ كل عقدةٍ هنا اشتققتها بيدك. اقرأها من القاع للقمّة، ولاحظ كيف يتّكئ كل شيءٍ على جملةٍ واحدة: النوع مجموعة.

الجذر │ └─ [٠] الأنواع تُمحى قبل التشغيل ──────────────────────┐ │ (عالمان: الأنواع وقت الترجمة / القيم وقت التشغيل) │ الشجرة الموازية: │ │ "القيم وقت التشغيل" └─ [١] النوع = مجموعة من القيم ★ العدسة الأمّ │ تنمو بصمت... │ ├─ الإسناد ⟺ احتواء مجموعات (⊆) │ │ ├─ subtype = subset (لا اسم، لا وراثة) │ │ └─ الاتجاه: أضيق → أوسع │ │ │ ├─ [٢] الشبكة (lattice) │ │ ├─ unknown = القمّة (كل القيم) │ │ ├─ never = القاع () → حارس الشمول │ │ ├─ any = ثقبٌ خارج الشبكة (يُطفئ البرهان) │ │ ├─ void = "تُجاهَل القيمة" │ │ └─ null/undefined مع strict = مجموعتان منفصلتان │ │ │ ├─ [٣] جبر المجموعات │ │ ├─ A|B = اتحاد (وسّع القيم، ضيّق العمليات) ★الثنائية│ │ ├─ A&B = تقاطع (ضيّق القيم، أغنِ الكائنات) │ │ ├─ string & number = never │ │ ├─ حرفيّات + اتحاد = مجموعات محدودة │ │ └─ widening (let يوسّع / const يحفظ / as const) │ │ │ ├─ [٤] التضييق (control-flow analysis) │ │ ├─ تقاطع في الموجب، طرح في السالب │ │ ├─ النوع صفة الموضع لا المتغيّر │ │ ├─ typeof/in/instanceof/truthiness/=== │ │ ├─ discriminated unions ★نمط النمذجة الأقوى │ │ ├─ حارس never = تحقّق الشمول (يغلق [٢]) │ │ └─ type predicates (x is T) — ثقةٌ يدوية ──────────┤ جسر نحو │ │ عالم القيم ├─ [٥] الأشكال (الكائنات) │ │ ├─ نوع كائن = "على الأقل هذه الخصائص" │ │ ├─ البنيوية (structural) = duck typing مبرهَن │ │ ├─ excess property check = إرشادٌ فوق البنيوية │ │ └─ ?, readonly (مُمحاة!), index signatures │ │ │ ├─ [٦] الدوال والتباين (variance) │ │ ├─ الاستبدالية (Liskov) = الأصل المشتقّ │ │ ├─ المعاملات contravariant (الاستهلاك يقلب ⊆) │ │ ├─ الإرجاع covariant (الإنتاج يحفظ ⊆) │ │ ├─ المصفوفات covariant = ثقبٌ مقصود ★اللاسلامة │ │ └─ "TS ليست سليمة عن قصد" (عملية > مثالية) │ │ │ ├─ [٧] Generics = دوال على الأنواع │ │ ├─ <T> = معامل نوع (يحلّ "مرنة لكن تتذكّر") │ │ ├─ T extends C = قيد احتواء (⊆ يطفو لمستوى الأنواع)│ │ ├─ تحفظ العلاقات (> الاتحاد/overloading) │ │ └─ Box<T>, Array<T>, Promise<T>, keyof, T[K] │ │ │ ├─ [٨] البرمجة على مستوى الأنواع │ │ ├─ conditional = if (+ التوزيع ★قوة وفخّ) │ │ ├─ infer = تفكيك / pattern matching │ │ ├─ mapped = حلقة (+ as، +/- ، template literals) │ │ ├─ العودية = تكرار │ │ └─ ⟹ مكتمل تورنغ (Turing-complete) │ │ │ └─ [٩] الحواف ◄════════ التحام الشجرتين ═══════════════┘ ├─ لا سلامة كاملة (مشكلة التوقّف → طيف سليم↔عملي) ├─ خريطة الثقوب (any/as/!/تباين/فهرسة/الحدّ الخارجي) ├─ عبور الجدار: validation عند الحدود، عامل الخارج unknown └─ branded types = استعادة الاسمية (تركيب [٠][٣][٥])

القراءات الثلاث للشجرة

عمودياً (من القاع): كل عقدةٍ تُشتقّ ممّا تحتها. لو نسيت قاعدة، انزل حتى تصل "النوع = مجموعة"، وأعِد الاشتقاق.

أفقياً (الشجرتان): يسار = عالم الأنواع (يُبنى بقوّة، يُمحى). يمين = عالم القيم (يبقى وقت التشغيل). الجسور بينهما: type predicates، runtime validation، branded types. كلها في الإقليمين ٤ و ٩.

نقاط الثقة (الثقوب): كل مكانٍ كتبت فيه any/as/! أو ادّعيت نوع بيانات خارجية = موضعٌ تخلّيت فيه عن البرهان. عدّها في كودك؛ كلّ واحدةٍ خطرٌ محسوب.

المعالم التي عبرتها دون أن تُعلَن

هذه قدراتٌ اكتسبتها؛ لم يعلنها أحد، اكتشفتها بحلّ اللغز.

منهج TypeScript — من الجذور · نظرية مجموعات + مُبرهِن نظريات النوع = مجموعة