ماڈیول اسباق (2/2)
اعلانات اور انضمام
ٹائپ ڈیکلریشن فائلز (.d.ts ایکسٹینشن کے ساتھ) TypeScript میں موجودہ JavaScript کوڈ کی شکل کو بیان کرنے کے لیے استعمال کی جاتی ہیں بغیر کسی حقیقی منطق کو لاگو کیے۔ ان میں صرف قسم کی تعریفیں، انٹرفیس، اور فنکشن کے دستخط ہوتے ہیں۔
خالص JavaScript میں لکھی گئی تھرڈ پارٹی لائبریریوں کا استعمال کرتے وقت یہ فائلیں ضروری ہیں۔
انضمام کا اعلان
ڈیکلریشن ضم کرنا ایک ایسا رویہ ہے جہاں کمپائلر ایک ہی نام کے ساتھ اعلان کردہ دو یا دو سے زیادہ الگ الگ ڈیکلریشنز کو ایک ہی تعریف میں ضم کرتا ہے۔
سب سے عام معاملہ انٹرفیس کا انضمام ہے:
interface User {
name: string;
}
interface User {
age: number;
}
// The resulting User interface has both name and age properties!
const student: User = {
name: 'Alice',
age: 23,
};اگر خصوصیات ایک ہی نام کا اشتراک کرتی ہیں، تو ان کا ایک ہی قسم کا ہونا ضروری ہے، بصورت دیگر TypeScript غلطی کی اطلاع دے گا۔
عالمی اور بیرونی ماڈیولز میں ترمیم کرنا
ہم دوسرے ماڈیولز یا عالمی دائرہ کار میں بیان کردہ انٹرفیس کو بڑھانے کے لیے ڈیکلریشن انضمام کا استعمال کر سکتے ہیں۔
مثال کے طور پر، اگر ہم براؤزر کے عالمی window آبجیکٹ میں کوئی پراپرٹی شامل کرنا چاہتے ہیں:
declare global {
interface Window {
analyticsToken: string;
}
}declare global کا استعمال کرتے ہوئے، ہم TypeScript کو بتاتے ہیں کہ ہم موجودہ عالمی Window انٹرفیس میں ایک نیا دستخط داخل کر رہے ہیں۔
خود ہی آزمائیں۔
مشق 1: بنیادی اعلان ضم کرنا
TypeScript میں، ایک ہی دائرہ کار میں ایک ہی نام کے انٹرفیس خود بخود ضم ہو جاتے ہیں۔ پراپرٹی کے نام کے ساتھ ایک انٹرفیس صارف کا اعلان کریں: سٹرنگ، پھر دوسرے بلاک میں اسی انٹرفیس کا اعلان کریں صارف پراپرٹی کی عمر: نمبر شامل کرتا ہے۔ آخر میں، مناسب اقدار کے ساتھ صارف کی قسم کے مستقل صارف کا اعلان کریں۔
اشارہ دکھائیں۔
انٹرفیس صارف کا دو بار اعلان کریں، متعلقہ خصوصیات داخل کرتے ہوئے، اور پھر فیلڈز کو صارف آبجیکٹ کو تفویض کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 2: گلوبل ونڈو انٹرفیس کو بڑھانا
تصور کریں کہ آپ عالمی ونڈو انٹرفیس کو بڑھانا چاہتے ہیں تاکہ Record<string, string> کی قسم کی تشکیل کے نام سے ایک حسب ضرورت پراپرٹی شامل کریں۔ نئی پراپرٹی کو گلوبل ونڈو انٹرفیس میں ضم کرنے کے لیے ڈیکلیئر گلوبل کا استعمال کرتے ہوئے درست ڈیکلریشن لکھیں۔
اشارہ دکھائیں۔
ڈیکلیئر گلوبل { انٹرفیس ونڈو { config: Record<string, string> کا استعمال کریں۔ } }۔
3 کوششوں کے بعد حل دستیاب ہے۔