Avatar ·

ماذا يفعل الكلمة المفتاحية `is` في TypeScript وكيفية استخدامها بشكل صحيح؟

```html مرحبًا جميعًا! لقد بدأت في تعلم TypeScript وصادفت الكلمة المفتاحية `is` التي تُستخدم في بعض الأمثلة. بصراحة، لستُ أفهم تمامًا ما الفائدة منها وما الفرق بينها وبين النوع المُعاد العادي `boolean`. إليك المثال الذي وجدته: ```typescript function isString(value: unknown): boolean { return typeof value === "string"; } ``` ولكنني رأيت أيضًا هذه الصيغة: ```typescript function isString(value: unknown): value is string { return typeof value === "string"; } ``` ما الفرق؟ أفهم أن `value is string` في نوع الإرجاع هي بنية خاصة، لكنني لا أستطيع استيعاب متى أستخدمها. إذا كنتُ ببساطة أُعيد `boolean`، أفلا يستطيع TypeScript أيضًا أن يفهم أن القيمة هي نص بعد التحقق؟ أم لا؟ حاولت كتابة هذا الكود: ```typescript function isString(value: unknown): boolean { return typeof value === "string"; } function processValue(value: unknown) { if (isString(value)) { ```