TypeScript ရှိ အထွေထွေ ကိန်းရှင်များ

အထွေထွေ (generics) အယူအဆကို ပိုမိုနားလည်စေရန် ကျွန်ုပ်တို့၏ ပထမဆုံး လုပ်ဆောင်ချက်ကို ဖန်တီးကြည့်ရအောင် - အတွင်းသွင်း တန်ပြန်လုပ်ဆောင်ချက် (identity function)။ ထိုကဲ့သို့သော လုပ်ဆောင်ချက်သည် ၎င်းထံ ပေးပို့သည့် အရာအား အတိအကျ - ထိုအရာ၏ အမျိုးအစားအတိုင်း ပြန်ပေးသည်။

အစတွင် ကျွန်ုပ်တို့၏ လုပ်ဆောင်ချက် ကွဲပြားချက်များကို တစ်ခုချင်းစီ ရေးသားကြည့်ကြပါစို့။

အငေါ့အနေဖြင့် ဂဏန်းတစ်ခုကို လက်ခံပြီး ဂဏန်းတစ်ခုကို ပြန်ပေးသော လုပ်ဆောင်ချက်ကို ရေးသားကြည့်ပါမည်။

typescriptfunction func(data: number): number {
  return data;
}

ယခု စာကြောင်းတစ်ခုကို အငေါ့အနေဖြင့် လက်ခံပြီး စာကြောင်းတစ်ခုကို ပြန်ပေးသော လုပ်ဆောင်ချက်ကို ရေးသားကြည့်ပါမည်။

typescriptfunction func(data: string): string {
  return data;
}

ယခု ဤအရာအားလုံးကို လုပ်ဆောင်ချက်တစ်ခုတည်းက လုပ်ဆောင်စေလိုသည် ဆိုပါစို့။ ဆိုလိုသည်မှာ ကျွန်ုပ်တို့သည် အထွေထွေပြုလုပ်ခြင်း (generalization) ကို လုပ်ဆောင်လိုခြင်း ဖြစ်သည်။

ထိုသို့ပြုလုပ်ရန် ကျွန်ုပ်တို့သည် အထွေထွေ ကိန်းရှင် (type variable) ကို အသုံးပြုမည် ဖြစ်ပြီး၊ ၎င်းသည် ဒေတာအမျိုးအစားကို ၎င်း၏အတွင်း သိမ်းဆည်းထားပေးမည်။ ထိုကဲ့သို့သော ကိန်းရှင်ကို လုပ်ဆောင်ချက်၏ အငေါ့များပါရှိသော လှည့်ကွင်းများမတိုင်မီ ထောင့်ကွင်းများအတွင်း ကြေညာသည်။ ထိုကဲ့သို့သော ကိန်းရှင်တစ်ခုကို ကြေညာကြည့်ရအောင်၊ ၎င်းကို အမည် T (မည်သည့်အမည်မဆို ပေးနိုင်သည်) ပေးလိုက်ပါမည်။

typescriptfunction func <T>(ဤနေရာတွင် အငေါ့များ) {
  return data;
}

ထိုသို့ပြုလုပ်ပြီးနောက် ကျွန်ုပ်တို့တွင် T ဆိုသော ကိန်းရှင် ပေါ်လာမည်ဖြစ်ပြီး၊ ၎င်းကို အသုံးပြု၍ အငေါ့၏ အမျိုးအစားကို ထည့်သွင်းထားနိုင်ပြီး ထို့နောက် ပြန်ပေးရန်တန်ဖိုး၏ အမျိုးအစားအဖြစ် သတ်မှတ်ပေးနိုင်မည်။

ကျွန်ုပ်တို့၏ အငေါ့၏ အမျိုးအစားကို ကျွန်ုပ်တို့၏ ကိန်းရှင် ပုံစံဖြင့် သတ်မှတ်ကြည့်ပါစို့။

typescriptfunction func <T>(data: T) {
  return data;
}

ရလဒ်အနေဖြင့် အငေါ့အား မည်သည့်အမျိုးအစားဖြင့်မဆို ပေးပို့နိုင်ပြီး၊ ထိုအမျိုးအစားသည် ကျွန်ုပ်တို့၏ ကိန်းရှင် T အတွင်းသို့ သိမ်းဆည်းသွားမည် ဖြစ်သည်။

ယခု ကိန်းရှင် T ၏ တန်ဖိုးကို လုပ်ဆောင်ချက်၏ ရလဒ်အဖြစ် သတ်မှတ်ရန် အသုံးပြုကြည့်ပါမည်။

typescriptfunction func <T>(data: T): T {
  return data;
}

ယခုဆိုလျှင် လုပ်ဆောင်ချက်၏ အမျိုးအစားရလဒ်သည် အငေါ့၏ အမျိုးအစားမှ ရယူလာသည်ကို တွေ့ရပေမည်။ စစ်ဆေးကြည့်ရအောင်။

ဂဏန်းတစ်ခုဖြင့် လုပ်ဆောင်ချက်ကို ခေါ်ယူကြည့်ပါမည်။

typescriptconsole.log( func(3) );   // 3 ကို ထုတ်ပြမည်

စာကြောင်းတစ်ခုဖြင့် လုပ်ဆောင်ချက်ကို ခေါ်ယူကြည့်ပါမည်။

typescriptconsole.log( func('x') ); // 'x' ကို ထုတ်ပြမည်
Задание 1

အငေါ့အနေဖြင့် ဂဏန်းနှစ်ခု သို့မဟုတ် စာကြောင်းနှစ်ခုကို လက်ခံသော လုပ်ဆောင်ချက်တစ်ခုကို ပြုလုပ်ပါ။ လုပ်ဆောင်ချက်၏ ရလဒ်အနေဖြင့် ၎င်းသည် အငေါ့များ၏ ပေါင်းလဒ်ကို ပြန်ပေးသင့်သည်။