ماذا يفعل الكلمة المفتاحية `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)) {
```