في TypeScript: ما الفرق بين `any` و `Object` ومتى يتم استخدام كل منهما؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم TypeScript وأشعر بالحيرة تجاه نوعين: `any` و `Object`. للوهلة الأولى يبدوان متشابهين — كلاهما يسمح بتخزين أي شيء. لكني أشعر أن هذا غير صحيح، وأن هناك فرقًا مهمًا بينهما.\n\nإليك مثال يربكني. أكتب دالة يجب أن تقبل أي نوع بيانات وتعيده كما هو:\n\n```typescript\nfunction identityAny(value: any): any {\n return value;\n}\n\nfunction identityObject(value: Object): Object {\n return value;\n}\n```\n\nكلا الدالتين تعملان. لكن عندما أحاول استدعاءهما واستخدام النتيجة، ألاحظ سلوكًا غريبًا. إذا قمت بتمرير رقم إلى `identityAny`، يمكنني استدعاء دوال الأرقام بسهولة:\n\n```typescript\nlet numAny = identityAny(42);\nnumAny.toFixed(2); // يعمل\n```\n\nأما إذا قمت بتمرير رقم إلى `identityObject`...