Skip to content
GitHub

Generic Superpowers! ပိုပြီး လိုက်လျောညီထွေတဲ့ Code များ ရေးသားခြင်း

အရှေ့က ကြုံတွေ့ခဲ့ရတဲ့ Code တွေ ထပ်နေတဲ့ ပြဿနာကို ဖြေရှင်းဖို့ TypeScript မှာ ပိုပြီး အစွမ်းထက်တဲ့ Features (စွမ်းဆောင်ရည်) တွေ ရှိပါတယ်။ အဲ့ဒါတွေကတော့ Generics နဲ့ Utility Types တွေပဲ ဖြစ်ပါတယ်။

Generic ဆိုတာ တကယ်တော့ ဘာလဲ? “Type Variable” ဆိုတဲ့ သဘောတရား

Section titled “Generic ဆိုတာ တကယ်တော့ ဘာလဲ? “Type Variable” ဆိုတဲ့ သဘောတရား”

Generics ရဲ့ အဓိက အယူအဆ (Concept) ကတော့ - Type တွေအတွက် ကြိုတင်ပြီး နေရာယူပေးထားတာပါပဲ (Variables တွေလိုမျိုးပေါ့)။ ဒီသင်ခန်းစာမှာ သူက Code တွေ ထပ်နေတဲ့ ပြဿနာကို ဘယ်လို ဖြေရှင်းပေးသလဲ ဆိုတာရယ်၊ အခြေခံ Generic Function လေးတစ်ခုကို ဘယ်လို ရေးရမလဲ ဆိုတာရယ်ကို လေ့လာသွားမှာ ဖြစ်ပါတယ်။

ယခင် သင်ခန်းစာမှာ တွေ့ခဲ့ရတဲ့ Code တွေ ထပ်ခါထပ်ခါ ရေးနေရတဲ့ ပြဿနာကို ဖြေရှင်းဖို့ Generics က ကူညီပေးနိုင်ပါတယ်။ စဉ်းစားကြည့်ပါ - Function တစ်ခုထဲကို Data အမျိုးမျိုး (number, string စသည်) ထည့်သုံးချင်ရင် Parameters တွေ ပေးရတယ် မဟုတ်လား။ Generics ကလည်း အဲ့ဒီ သဘောတရား အတိုင်းပါပဲ။ Function တစ်ခုတည်းကို Data Type အမျိုးမျိုး ထည့်သုံးလို့ရအောင် ကူညီပေးတာပါ။ သူတို့က Code ရေးတဲ့အချိန်မှာ ဘယ် Data Type ဝင်လာမလဲဆိုတာ မသိသေးခင်၊ Type တွေအတွက် ကြိုတင် နေရာယူထားပေးတဲ့ နေရာလွတ် (Placeholders) လေးတွေ၊ ဒါမှမဟုတ် Type တွေကို ကိုယ်စားပြုပေးတဲ့ Variables (Type Variables) လေးတွေ ဖြစ်ပါတယ်။

index.ts
// ၁။ Function နာမည်ရဲ့ နောက်မှာ Generic Type Variable <T> ကို ကြေညာမယ်။
// ၂။ လက်ခံမယ့် Argument ရဲ့ Type ကို T လို့ သတ်မှတ်မယ်။
// ၃။ ပြန်ထုတ်ပေးမယ့် Return Type ကိုလည်း T လို့ သတ်မှတ်မယ်။
function identity<T>(arg: T): T {
console.log(`Received data's Type: ${typeof arg}`);
return arg;
}
  • <T>: ဒါက “ဒီ identity Function ဟာ Generic ဖြစ်တယ်၊ Data Type တစ်ခုခုနဲ့ အလုပ်လုပ်မယ်၊ အဲ့ဒီ Type ကို လောလောဆယ် T လို့ အမည်ပေးထားမယ်” လို့ ကြေညာလိုက်တာပါ။
  • arg: T: Function က လက်ခံမယ့် arg ဆိုတဲ့ Data ရဲ့ Type ဟာ T ကိုယ်စားပြုထားတဲ့ Type ပဲ ဖြစ်ရပါမယ်။
  • : T: Function က ပြန်ထုတ်ပေးမယ့် Data ရဲ့ Type ကလည်း T ကိုယ်စားပြုထားတဲ့ Type အတိုင်းပဲ အတိအကျ ဖြစ်ရပါမယ်။