مرکزی مواد پر جائیں
ماڈیول 3 · سبق 1 از 2کورس میں 5/14~12 min
ماڈیول اسباق (1/2)

ٹائپ شدہ فنکشنز

فنکشنز کسی بھی JavaScript ایپلیکیشن کے بنیادی تعمیراتی بلاکس ہیں۔ TypeScript میں، ہم اپنے انٹرفیس اور فنکشن کالز کو انتہائی محفوظ اور خود دستاویزی بناتے ہوئے، ان پٹ آرگیومینٹس اور ریٹرن ویلیوز دونوں کو قطعی طور پر تشریح کر سکتے ہیں۔


اختیاری اور طے شدہ پیرامیٹرز

JavaScript میں، ہر پیرامیٹر اختیاری ہے اور اگر چھوڑ دیا جائے تو undefined پر ڈیفالٹ ہوتا ہے۔ TypeScript میں، بطور ڈیفالٹ، ہر اعلان کردہ پیرامیٹر لازمی ہے۔

تاہم، ہم سوالیہ نشان (?) کا استعمال کرتے ہوئے اختیاری پیرامیٹرز کی وضاحت کر سکتے ہیں، یا براہ راست فنکشن کے دستخط میں پہلے سے طے شدہ اقدار کی وضاحت کر سکتے ہیں۔

1. اختیاری پیرامیٹرز

اختیاری پیرامیٹرز کو تمام لازمی پیرامیٹرز کے بعد پوزیشن میں ہونا چاہیے:

TS
function greetUser(name: string, title?: string): string {
  if (title) {
    return `Good morning ${title} ${name}`;
  }
  return `Hello ${name}`;
}

2. طے شدہ پیرامیٹرز

اگر ڈیفالٹ ویلیو والے پیرامیٹر کے لیے کوئی قدر فراہم نہیں کی جاتی ہے، تو TypeScript اپنی قسم کا اندازہ لگاتا ہے اور مخصوص ڈیفالٹ تفویض کرتا ہے:

TS
function greetUserWithDefault(name: string, prefix: string = 'Hello'): string {
  return `${prefix} ${name}`;
}

باقی پیرامیٹرز (...args)

جب ہم دلائل کی متغیر تعداد کو قبول کرنا چاہتے ہیں، تو ہم باقی آپریٹر استعمال کر سکتے ہیں۔ TypeScript میں، ان پیرامیٹرز کو ایک صف کے طور پر ٹائپ کیا جانا چاہیے:

TS
function sumAll(message: string, ...numbers: number[]): string {
  const total = numbers.reduce((sum, n) => sum + n, 0);
  return `${message} ${total}`;
}

فنکشن کی اقسام (کال دستخط)

ہم کسی فنکشن کی قسم کو آزادانہ طور پر بیان کر سکتے ہیں اور پھر اسے متغیر اعلانات یا کال بیک دلائل میں دوبارہ استعمال کر سکتے ہیں:

TS
// Define function type using type alias
type MathOperation = (a: number, b: number) => number;

const add: MathOperation = (x, y) => x + y;
const multiply: MathOperation = (x, y) => x * y;

یہ نقطہ نظر ضروری ہے جب فنکشنز کو دوسرے فنکشنز (کال بیکس) کے دلائل کے طور پر منتقل کرتے ہیں۔


خود ہی آزمائیں۔

مشق 1: اختیاری پیرامیٹرز

ورزش#ts.m3.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

فارمیٹ نام کے نام سے ایک فنکشن بنائیں جو پہلے نام کے پیرامیٹر (سٹرنگ) اور ایک اختیاری آخری نام پیرامیٹر (سٹرنگ) کو قبول کرے۔ اگر آخری نام فراہم کیا گیا ہے تو، 'پہلا نام آخری نام' واپس کریں، بصورت دیگر صرف 'پہلا نام' لوٹائیں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

یاد رکھیں کہ اختیاری پیرامیٹر کا اعلان لاسٹ نام کا استعمال کرتے ہوئے کیا جاتا ہے: لازمی کے بعد سٹرنگ۔

3 کوششوں کے بعد حل دستیاب ہے۔

مشق 2: پہلے سے طے شدہ پیرامیٹرز

ورزش#ts.m3.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

پاور کے نام سے ایک فنکشن بنائیں جو بیس (نمبر) اور ایکسپوننٹ (نمبر 2 کی ڈیفالٹ ویلیو کے ساتھ) کو قبول کرے۔ فنکشن کو ایکسپوننٹ پر اٹھائے گئے بیس کی قدر کا حساب لگانا اور واپس کرنا چاہیے (Math.pow استعمال کریں)۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

فنکشن دستخط کے اندر بیس: نمبر اور ایکسپوننٹ: نمبر = 2 استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش 3: فنکشن دستخط

ورزش#ts.m3.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

BinaryOp نامی ایک قسم کے عرف کی وضاحت کریں جو دو نمبر پیرامیٹرز کو قبول کرنے اور ایک نمبر کو واپس کرنے والے فنکشن کی وضاحت کرتا ہے۔ اس کے بعد، BinaryOp قسم کی ایک مستقل نامی رقم کا اعلان کریں جو اضافہ کو لاگو کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

فنکشن کی قسم کے لیے نحو ہے (a: number, b: number) => نمبر۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش 4: کال بیک فنکشن

ورزش#ts.m3.l1.e4
کوششیں: 0لوڈ ہو رہا ہے…

پروسیس آئٹمز کے نام سے ایک فنکشن بنائیں جو دو پیرامیٹرز کو قبول کرتا ہے: آئٹمز (سٹرنگز کی ایک صف) اور کال بیک (ایسا فنکشن جو ایک سٹرنگ کو قبول کرتا ہے اور کچھ نہیں لوٹاتا، یعنی باطل)۔ فنکشن کو ضروری ہے کہ آئٹمز میں ہر ایک عنصر پر لوپ کے لیے... چلائیں اور اسے کال بیک پر منتقل کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

دستخط کو پروسیس آئٹمز(آئٹمز: سٹرنگ[]، کال بیک: (آئٹم: سٹرنگ) => باطل): باطل قرار دیں اور کال بیک کو کال کرنے کے لیے لوپ کا استعمال کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔