دروس الوحدة (1/2)
التكوين باستخدام tsconfig.json
يحدد الملف tsconfig.json الدليل الجذر لمشروع TypeScript وخيارات المترجم المطلوبة لإنشاء المشروع.
عندما تقوم بتشغيل tsc في دليل المشروع، يبحث المترجم عن هذا الملف لتوجيه سلوك الترجمة الخاص به.
بنية ملف tsconfig.json
يبدو ملف التكوين النموذجي كما يلي:
{
"compilerOptions": {
"target": "es2022",
"module": "commonjs",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}الخصائص الرئيسية هي:
compilerOptions: إعدادات المترجم.include: يحدد الملفات أو المجلدات المطلوب تجميعها.exclude: يحدد الملفات أو المجلدات التي سيتم تجاهلها أثناء التجميع.
خيارات المترجم الرئيسية
فيما يلي بعض أهم الإعدادات التي يجب معرفتها:
target: يحدد إصدار إخراج JavaScript بواسطة المترجم (على سبيل المثال،es5، es6/es2015،es2020،esnext).module: يحدد نظام الوحدة المستخدم في التعليمات البرمجية المجمعة (على سبيل المثال،commonjs،esnext،node16).strict: تمكين مجموعة واسعة من السلوكيات الصارمة للتحقق من النوع. يوصى بشدة بضبط هذا علىtrueللحصول على أقصى قدر من الأمان للكتابة. يتيح خيارات مثل:noImplicitAny: ظهور خطأ في التعبيرات والإعلانات ذات النوع الضمنيanyعندما لا يتم توفير تعليق توضيحي للنوع.strictNullChecks: يمنع تعيينnullأوundefinedللأنواع التي لا تتضمنها صراحةً في اتحادها.
جربه بنفسك
التمرين 1: التعامل مع عمليات التحقق الصارمة
ضمن الخيار الصارم NullChecks: true في tsconfig.json، لا يمكننا تعيين قيمة فارغة أو غير محددة للأنواع الأولية. قم بتعريف دالة باسم parseAge تقبل إدخالاً من النوع string | null ويعيد رقمًا إذا لم يكن الإدخال خاليًا وكان عددًا صحيحًا صالحًا، وإلا فإنه يُرجع 0. تعامل بشكل صريح مع الحالة الخالية لتمرير التحويل البرمجي الصارم.
إظهار التلميح
تحقق مما إذا كان الإدخال فارغًا في بداية الوظيفة وأرجع 0 مباشرة قبل معالجة السلسلة.
الحل متاح بعد 3 من المحاولات
التمرين 2: الكتابة الصارمة دون أي ضمنية
ضمن noImplicitAny: true، يجب كتابة أي معلمة لا يمكن استنتاج نوعها بشكل صريح. قم بإنشاء دالة باسمprocessItems تقبل عناصر صفيف (صفيف من الأرقام) ووظيفة رد اتصال تأخذ رقمًا واحدًا كوسيطة ولا تُرجع شيئًا. تأكد من عدم استخدام أي شيء واكتب كل شيء بشكل صريح.
إظهار التلميح
قم بتعريف الوظيفة بوظيفة التوقيعprocessItems(items: number[], callback: (item: number) => void): void.
الحل متاح بعد 3 من المحاولات