ماڈیول اسباق (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: کمپائلر کے ذریعہ جاوا اسکرپٹ آؤٹ پٹ کے ورژن کی وضاحت کرتا ہے (مثال کے طور پر،es5، es6/es2015،es2020،esnext)۔module: مرتب کردہ کوڈ میں استعمال ہونے والے ماڈیول سسٹم کی وضاحت کرتا ہے (جیسے،commonjs,esnext,node16)۔strict: سخت قسم کی جانچ پڑتال کے رویوں کا ایک وسیع مجموعہ فعال کرتا ہے۔ زیادہ سے زیادہ قسم کی حفاظت کے لیے اسےtrueپر سیٹ کرنے کی انتہائی سفارش کی جاتی ہے۔ یہ اختیارات کو قابل بناتا ہے جیسے:noImplicitAny: جب کسی قسم کی تشریح فراہم نہیں کی جاتی ہے تو ایک مضمرanyقسم کے ساتھ اظہار اور اعلانات پر ایک خامی پیدا کرتا ہے۔strictNullChecks:nullیاundefinedکو ان قسموں کو تفویض کرنے سے روکتا ہے جو انہیں واضح طور پر اپنی یونین میں شامل نہیں کرتی ہیں۔
خود ہی آزمائیں۔
ورزش 1: سخت نال چیکس کو ہینڈل کرنا
sconfig.json میں strictNullChecks: true آپشن کے تحت، ہم قدیم اقسام کو null یا undefined تفویض نہیں کر سکتے۔ parseAge نامی ایک فنکشن کا اعلان کریں جو قسم کے سٹرنگ کے ان پٹ کو قبول کرتا ہے۔ null اور نمبر لوٹاتا ہے اگر ان پٹ null نہیں ہے اور ایک درست عدد ہے، ورنہ یہ 0 لوٹاتا ہے۔ سخت تالیف پاس کرنے کے لیے null کیس کو واضح طور پر ہینڈل کریں۔
اشارہ دکھائیں۔
چیک کریں کہ آیا فنکشن کے آغاز میں ان پٹ null ہے اور سٹرنگ پر کارروائی کرنے سے پہلے 0 واپس کر دیں۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 2: بغیر کسی مضمرات کے سخت ٹائپنگ
noImplicitAny: true کے تحت، کوئی بھی پیرامیٹر جس کی قسم کا اندازہ نہیں لگایا جا سکتا اسے واضح طور پر ٹائپ کیا جانا چاہیے۔ پروسیس آئٹمز کے نام سے ایک فنکشن بنائیں جو ایک سرنی آئٹمز (نمبروں کی صف) کو قبول کرتا ہے اور ایک کال بیک فنکشن جو ایک نمبر کو بطور دلیل لیتا ہے اور کچھ بھی نہیں دیتا ہے۔ یقینی بنائیں کہ کوئی بھی استعمال نہ کریں اور ہر چیز کو واضح طور پر ٹائپ کریں۔
اشارہ دکھائیں۔
دستخطی فنکشن کے ساتھ فنکشن کا اعلان کریں processItems(items: number[]، callback: (item: number) => void): void۔
3 کوششوں کے بعد حل دستیاب ہے۔