في عالم يفقد السيطرة 🌀 عالم البرمجة لك

borma logo
person


أسئلة (TypeScript):

  • إيه الفرق بين Type و Interface؟ وامتى تستخدم كل واحدة؟

    الاتنين بيعملوا نفس الحاجة تقريبًا: تعريف شكل البيانات، بس الفرق الأساسي إن الـ interface بيشتغل أكتر مع الـ object والـ class، وبيسمح لك تعمل extends يعني تورث أكتر من Interface. أما الـ type فبيكون أكثر مرونة، تقدر تستخدمه مع الـ union والـ tuples، لكنه مش بيورث زي الـ interface. لو بتتعامل مع كائنات وعايز تورث، استخدم interface، أما لو بتتعامل مع أنواع أكثر تعقيدًا، استخدم type.

  • إيه الفرق بين unknown و any؟ وإمتى تستخدم كل واحد فيهم؟

    الاتنين بيستخدموا لما تبقي مش عارف النوع الحقيقي للبيانات، بس الفرق إن any بيسمحلك تستخدم أي حاجة من غير قيود، وده ممكن يسبب أخطاء في الكود. أما unknown فبيجبرك تعمل Type Checking قبل ما تستخدم القيمة، عشان تتأكد إنها النوع اللي مستنيه. الأفضل تستخدم unknown لو بتتعامل مع بيانات جاية من API أو أي مصدر خارجي، عشان تجبر نفسك على الفحص قبل استخدامها.

  • إزاي تقدر تعمل Type Inference في TypeScript؟ وإيه أهميته؟

    TypeScript ذكي وبيعرف النوع تلقائيًا في أغلب الحالات، فلو كتبت:

  • Copy svg

    هيفهم لوحده إن name نوعه string. الفايدة من Type Inference إنك مش مضطر تكتب الأنواع بنفسك دايمًا، فبيخلي الكود أنضف وأوضح.

  • إزاي تستخدم Generics في TypeScript؟ وهات مثال عملي؟

    الـ Generics بتسمح لك تكتب دوال و interfaces مرنة تشتغل مع أكتر من نوع:

  • Copy svg

    ده مفيد لما يكون عندك أكواد reusable وعايزها تشتغل مع أكتر من نوع بدل ما تقيدها بنوع معين.

  • إيه الفرق بين optional properties و readonly properties في TypeScript؟

    • الـ optional properties (باستخدام ?) معناها إن الخاصية ممكن تكون موجودة أو لا، زي:
  • Copy svg

    • أما readonly properties فمعناها إن القيمة بتتحدد وقت الإنشاء بس ومينفعش تتغير بعد كده:
    • Copy svg

  • إزاي تقدر تعمل Utility Types زي Pick، Omit، و Partial؟ وليه ممكن تحتاجهم؟

    دي أدوات جاهزة في TypeScript بتساعدك تعدّل على الـ types بسهولة:

    • Pick: بياخد جزء معين من الـ type ويعمل منه جديد.
    Copy svg

    • Omit: العكس، بيحذف حاجات من النوع.
    Copy svg

    • Partial: بيخلي كل الخصائص اختيارية.
    Copy svg

    دي مفيدة جدًا لما بتتعامل مع النماذج والـ APIs.

  • إزاي تتعامل مع Modules في TypeScript؟ وإيه الفرق بين export و export default؟

    لو عندك ملف TypeScript، تقدر تصدر منه كذا متغير أو دالة باستخدام export:

  • Copy svg

    • وتقدر تستورده كده:
    Copy svg

    • أما export default فبتصدر حاجة واحدة بس، وده بيخليك تستوردها بأي اسم:
    Copy svg

    Copy svg

    export default بيكون مفيد لو بتصدر حاجة رئيسية واحدة من الملف.

  • إزاي تكتب Decorators في TypeScript؟ وليه ممكن تحتاجهم؟

    Decorators هي ميزة في TypeScript بتسمح لك تعدّل على الـ classes والـ methods بطريقة مرنة، بس لازم تكون مفعلها في tsconfig.json:

  • Copy svg

    مثال عملي على class decorator:

    Copy svg

    لما تنشئ Person، هيتطبع اسم الكلاس تلقائيًا. Decorators مفيدة في الـ frameworks زي Angular.

  • إزاي تقدر تعمل Type Narrowing وإيه الطرق المختلفة لتحقيقه؟

    Type Narrowing معناه إنك تضيّق نطاق النوع عشان TypeScript يعرف يتعامل معاه بشكل أدق. فيه طرق كتير، منها:

  • typeof:

    Copy svg

    instanceof:

    Copy svg

    in:

    Copy svg

    Type Narrowing مهم جدًا عشان تضمن إن الكود بيتعامل مع الأنواع الصحيحة بطريقة صحيحة.

  • إيه هي Enum في TypeScript؟ وإزاي بتشتغل؟

    Enum بتستخدم لما يكون عندك مجموعة ثوابت مرتبطة ببعض، زي أيام الأسبوع مثلا:

  • Copy svg

    تبدأ القيم افتراضيًا من 0، لكن ممكن تحددها بنفسك:

    Copy svg

    Enum مفيدة لما يكون عندك قيم ثابتة وعايز تسهّل التعامل معاها بدل ما تستخدم Strings أو أرقام عشوائية.

قسم التعليقات