AzLearn

سياسة any

any Policy

مفهوم ~19 دقيقة

سياسة any — any Policy

any يوقف TypeScript عن مساعدتك. أحياناً تضطر للتعامل مع مكتبة أو JSON غير معروف، لكن لا تسمح لـany بالتسرب إلى قلب التطبيق. استخدم unknown عند الحدود، تحقق، ثم حول إلى نوع واضح.

قاعدة production: إذا ظهر any, يجب أن يكون محصوراً ومبرراً. لا تستخدمه لإسكات compiler. غالباً الحل الصحيح هو type guard، أو generic، أو إعادة تصميم النوع.

مثال unknown أفضل

index.ts

unknown يجبرك على الفحص قبل الاستخدام. هذا ما نريده عند حدود النظام.

تطبيق السياسة عبر Compiler — Compiler Enforcement

سياسة any بدون هذه الأعلام في tsconfig.json مجرد نية. فعّلها جميعاً:

العلَمما يفعله
noImplicitAny: trueيمنع any الضمني في معاملات الدوال وما لم يُعلن صراحة
strictNullChecks: truenull وundefined لا يُسنَدان لأنواع أخرى بدون تحقق
noUncheckedIndexedAccess: truearr[0] يصبح T | undefined لا T
exactOptionalPropertyTypes: trueيُفرّق بين field?: string (غائب أو string) وfield: string | undefined
{
  "compilerOptions": {
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true
  }
}

"strict": true يُفعّل noImplicitAny وstrictNullChecks تلقائياً، لكن اذكرهما صراحة لتوثيق القصد. noUncheckedIndexedAccess وexactOptionalPropertyTypes خارج strict ويجب تفعيلهما يدوياً.

راقب الانتشار

إذا دخل any إلى دالة مركزية، سينتشر منها إلى عشرات الأماكن. أوقفه مبكراً.

تحدي — Challenge