كيفية إصلاح خطأ "Index signature of object type implicitly has an 'any' type" في TypeScript مع العلم noImplicitAny
مرحباً بالجميع! أنا أكتب مشروعاً في TypeScript وقمت بتفعيل الوضع الصارم مع العلم `noImplicitAny`. الآن واجهت مشكلة: عندما أحاول الوصول إلى كائن بواسطة مفتاح ديناميكي، يظهر المترجم خطأ:
> Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '...'. No index signature with a parameter of type 'string' was found on type '...'.
هذا مثال على الكود الخاص بي. لدي كائن يحتوي على تكوين الألوان لحالات الطلب المختلفة:
```typescript
const statusColors = {
pending: 'orange',
confirmed: 'blue',
shipped: 'green',
cancelled: 'red'
};
function getStatusColor(status: string): string {
return statusColors[status]; // ❌ خطأ!
}
```
أتوقع أن الدالة ستعيد اللون بناءً على المفتاح، لكن TypeScript يشتكي. أفهم أن المشكلة هي أن `status` من النوع `string`، بينما مفاتيح الكائن هي قيم حرفية محددة (`'pending'`, `'confirmed'`, إلخ). لكن كيف يمكن كتابة الأنواع بشكل صحيح لهذه الحالة؟ لا أريد