Avatar ·

unknown مقابل any: ما الفرق ومتى تستخدم كل منهما في TypeScript؟

مرحبًا! بدأت مؤخرًا في تعلم TypeScript وواجهت النوعين `any` و `unknown`. يبدو أن كلاهما يسمح بتخزين أي شيء، لكنني لا أفهم تمامًا الفرق بينهما ومتى أستخدم كل منهما. هذا مثال يربكني. لدي دالة تستقبل بيانات من API، ولا أعرف بالضبط ما الذي سيأتي: ```typescript function processData(data: any) { console.log(data.toUpperCase()); // يعمل، لكن إذا لم تكن data نصًا، ينهار في وقت التشغيل } ``` إذا استبدلت `any` بـ `unknown`: ```typescript function processData(data: unknown) { console.log(data.toUpperCase()); // خطأ في الترجمة: Object is of type 'unknown' } ``` إذن، مع `unknown` الكود لا يُترجم حتى. لماذا نحتاج `unknown` إذا كان يعيق فقط؟ سمعت أن `unknown` يُعتبر أكثر أمانًا، لكن عمليًا لا أرى مزايا، فقط مشاكل إضافية. أيضًا، لا أفهم كيفية التعامل مع `unknown` بشكل صحيح. إذا حصلت على بيانات من API، فلا يزال عليّ...