Avatar ·

خطأ TS2322: "could be instantiated with a different subtype of constraint 'object'" — كيف أصلحه؟

مرحبًا! أنا مبتدئ في TypeScript وواجهت خطأ غريبًا عند استخدام generics.\n\nلدي دالة بسيطة يجب أن تأخذ object وتعيد مفاتيحه. أريد أن تعمل الدالة مع أي object، ولكن مع الحفاظ على نوع القيمة المُعادة كمصفوفة من مفاتيح هذا object تحديدًا.\n\nهذا هو الكود الخاص بي:\n\n```typescript\nfunction getKeys(obj: T): (keyof T)[] {\n return Object.keys(obj) as (keyof T)[];\n}\n\nfunction processObject(data: T) {\n // هنا أريد تمرير data إلى دالة أخرى\n const handler = (input: U): void => {\n const keys = getKeys(input);\n console.log(keys);\n };\n\n handler(data); // الخطأ هنا!\n}\n```\n\nTypeScript يعطي الخطأ:\n`Argument of type 'T' is not assignable`