Avatar ·

خطأ "not assignable to parameter of type never" في TypeScript: الأسباب والحل

مرحبًا! بدأت في تعلم TypeScript وواجهت خطأ غريبًا لا أستطيع فهمه. لدي كود بسيط حيث أحاول تصفية مصفوفة (array) بإزالة القيم null و undefined منها: ```typescript const items: (string | null | undefined)[] = ['hello', null, 'world', undefined]; const filteredItems = items.filter(item => item !== null && item !== undefined); console.log(filteredItems); // أتوقع: ['hello', 'world'] ``` لكن TypeScript يعطي خطأ: `Argument of type '(item: string | null | undefined) => boolean' is not assignable to parameter of type '(value: string | null | undefined, index: number, array: (string | null | undefined)[]) => value is never'`. جربت عدة خيارات، مثل تحديد النوع (type) لـ `filteredItems` بشكل صريح، لكن الخطأ لا يزال قائمًا. ماذا يعني `never` في هذا السياق وكيف يمكن تصفية المصفوفة بشكل صحيح ليفهم TypeScript أن null و undefined قد أزيلا؟ من فضلك، اشرح ما يحدث وكيفية الإصلاح. شكرًا مقدمًا!