سياسة any
any Policy
مفهوم
~19 دقيقة
سياسة any — any Policy
any يوقف TypeScript عن مساعدتك. أحياناً تضطر للتعامل مع مكتبة أو JSON غير معروف، لكن لا تسمح لـany بالتسرب إلى قلب التطبيق. استخدم unknown عند الحدود، تحقق، ثم حول إلى نوع واضح.
قاعدة production: إذا ظهر any, يجب أن يكون محصوراً ومبرراً. لا تستخدمه لإسكات compiler. غالباً الحل الصحيح هو type guard، أو generic، أو إعادة تصميم النوع.
مثال unknown أفضل
index.ts
Output:
unknown يجبرك على الفحص قبل الاستخدام. هذا ما نريده عند حدود النظام.
تطبيق السياسة عبر Compiler — Compiler Enforcement
سياسة any بدون هذه الأعلام في tsconfig.json مجرد نية. فعّلها جميعاً:
| العلَم | ما يفعله |
|---|---|
noImplicitAny: true | يمنع any الضمني في معاملات الدوال وما لم يُعلن صراحة |
strictNullChecks: true | null وundefined لا يُسنَدان لأنواع أخرى بدون تحقق |
noUncheckedIndexedAccess: true | arr[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
إذا value ليس string أرجع Unknown