ماڈیول اسباق (1/2)
عرفی نام بمقابلہ انٹرفیس ٹائپ کریں۔
TypeScript میں، ہم پیچیدہ اشیاء کی ساخت کو دو بنیادی طریقوں سے بیان کر سکتے ہیں: انٹرفیس (interface) یا Type Aliases (type) کا استعمال کرتے ہوئے۔ دونوں کسی چیز یا ڈیٹا ڈھانچے کی "شکل" کو بیان کرنے کا کام کرتے ہیں، لیکن ان میں کچھ بنیادی فرق ہیں۔
انٹرفیس (interface)
ایک انٹرفیس کسی چیز کی ساخت کے لئے ایک معاہدے کی وضاحت کرتا ہے۔ یہ آبجیکٹ کی شکلوں اور عوامی APIs کو قابل توسیع انداز میں بیان کرنے کا معیاری ٹول ہے۔
interface Book {
title: string;
pages: number;
author?: string; // Optional property (can be omitted)
}
const myBook: Book = {
title: 'The Lord of the Rings',
pages: 1200,
};سوالیہ نشان (?) کسی پراپرٹی کو اختیاری کے بطور نشان زد کرتا ہے۔ myBook آبجیکٹ درست ہے یہاں تک کہ اگر یہ author پراپرٹی کو چھوڑ دیتا ہے۔
قسم کے عرفی نام (type)
ایک قسم کا عرف آپ کو کسی بھی موجودہ قسم کے ساتھ ایک نیا نام جوڑنے کی اجازت دیتا ہے، بشمول قدیم اقسام، یونینز، ٹیپلز، یا مکمل آبجیکٹ ڈھانچہ۔
type Point = {
x: number;
y: number;
};
const coordinates: Point = { x: 10, y: 20 };کلیدی فرق: توسیع اور اعلان ضم کرنا
اگرچہ interface اور type زیادہ تر عام استعمال کے معاملات کے لیے قابل تبادلہ ہیں، لیکن وہ دو اہم اختلافات کو ظاہر کرتے ہیں:
1. توسیع پذیری (وراثت)
انٹرفیس کو extends کلیدی لفظ کا استعمال کرتے ہوئے بڑھایا جاتا ہے:
interface User {
username: string;
}
interface Admin extends User {
privileges: string[];
}قسم کے عرفی ناموں کو extends کا استعمال کرتے ہوئے بڑھایا نہیں جا سکتا، لیکن انہیں انٹرسیکشن آپریٹر (&) کا استعمال کرتے ہوئے جوڑا جا سکتا ہے:
type User = {
username: string;
};
type Admin = User & {
privileges: string[];
};2. اعلان ضم کرنا
ایک ہی دائرہ کار میں ایک ہی نام کے متعدد انٹرفیس خود بخود مرتب کرنے والے کے ذریعہ ضم ہوجاتے ہیں:
interface User {
name: string;
}
interface User {
email: string;
}
// Now User has both 'name' and 'email'!یہ طرز عمل تعاون یافتہ نہیں ہے قسم کے عرفی ناموں سے: ایک ہی type کا دو بار اعلان کرنے سے مرتب وقت کی خرابی پیدا ہوگی۔
خود ہی آزمائیں۔
ورزش 1: یوزر انٹرفیس
صارف نام کے ایک انٹرفیس کی وضاحت کریں جو صارف آبجیکٹ کو بیان کرتا ہے۔ انٹرفیس پر مشتمل ہونا چاہیے: id بطور نمبر، صارف نام بطور اسٹرنگ اور ای میل بطور اختیاری اسٹرنگ۔
اشارہ دکھائیں۔
نحوی ای میل استعمال کریں؟: اسٹرنگ کو اختیاری کے بطور نشان زد کرنے کے لیے۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 2: پوائنٹ 2 ڈی ٹائپ عرف
ایک قسم کا عرف بنائیں جس کا نام Point2D ہے جو کوآرڈینیٹ x اور y (دونوں نمبروں) کے ساتھ دو جہتی نقطہ کی نمائندگی کرتا ہے۔
اشارہ دکھائیں۔
نحو کی قسم Point2D = { x: number; y: نمبر؛ };
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 3: انٹرفیس کو بڑھانا
آئی ڈی (نمبر) اور قیمت (نمبر) کے ساتھ پروڈکٹ نامی انٹرفیس کی وضاحت کریں۔ اس کے بعد، DiscountedProduct کے نام سے ایک انٹرفیس کی وضاحت کریں جو پروڈکٹ کو بڑھاتا ہے اور discountCode (string) نامی ایک اختیاری پراپرٹی شامل کرتا ہے۔
اشارہ دکھائیں۔
فیلڈز کو وراثت میں حاصل کرنے اور ڈسکاؤنٹ کوڈ شامل کرنے کے لیے توسیعی مصنوعات کا استعمال کریں؟: سٹرنگ۔
3 کوششوں کے بعد حل دستیاب ہے۔
مشق 4: سرور کنفیگریشن
سرور کے لیے کنفیگریشن آبجیکٹ کی نمائندگی کرنے والے ServerConfig نام کے ایک قسم کے عرف کی وضاحت کریں۔ اس میں شامل ہونا چاہیے: میزبان (سٹرنگ)، پورٹ (نمبر)، اور ایچ ٹی پی ایس کو اختیاری بولین فیلڈ کے طور پر استعمال کریں۔
اشارہ دکھائیں۔
نحو کی قسم کا استعمال کریں ServerConfig = { host: string; پورٹ: نمبر؛ useHttps؟: boolean; }
3 کوششوں کے بعد حل دستیاب ہے۔