Avatar ·

لماذا تُستخدم علامة الاستفهام في معاملات دوال TypeScript؟

مرحبًا بالجميع! بدأت مؤخرًا في تعلم TypeScript ووجدت بناء جملة غريبًا في معاملات الدوال. أرى أحيانًا أنهم يضعون علامة استفهام قبل النقطتين ونوع المعامل. على سبيل المثال: ```typescript function greet(name?: string) { return `Hello, ${name || 'Guest'}!`; } ``` أفهم أن `: string` تعني أن المعامل يجب أن يكون سلسلة نصية. لكن ماذا تفعل `?` قبل ذلك؟ حاولت استدعاء الدالة بمعامل وبدونه — ويبدو أنها تعمل في كلتا الحالتين. لكن إذا أزلت علامة الاستفهام، يبدأ TypeScript في التذمر عندما أستدعي `greet()` بدون وسيط. ماذا تعني علامة الاستفهام هذه بالضبط؟ هل هي ميزة خاصة بـ JavaScript أم فقط TypeScript؟ وهل هناك فرق بين `name?: string` و `name: string | undefined`؟ سأكون ممتنًا لشرح مفصل مع أمثلة، لأن التوثيق مكتوب بشكل معقد، وعمليًا أريد أن أفهم كيفية الاستخدام الصحيح. شكرًا مقدمًا! <<>>

ماذا تعني علامة الاستفهام في المعامل