Generic Superpowers! ပိုပြီး လိုက်လျောညီထွေတဲ့ Code များ ရေးသားခြင်း
ဒီလို အခက်အခဲတွေကို ဖြေရှင်းဖို့ TypeScript မှာ ပိုအစွမ်းထက်တဲ့ ကိရိယာတွေ ရှိတယ်။ အဲဒါတွေကတော့ Generics နဲ့ Utility Types တွေပဲ ဖြစ်တယ်။
Generic ဆိုတာ တကယ်တော့ ဘာလဲ? “Type Variable” ဆိုတဲ့ Idea
Section titled “Generic ဆိုတာ တကယ်တော့ ဘာလဲ? “Type Variable” ဆိုတဲ့ Idea”Generics ရဲ့ အဓိက Concept ဖြစ်တဲ့ Type တွေအတွက် နေရာယူထားတာ ဆိုတဲ့ အချက်ကို နားလည်ဖို့၊ သူက ဘယ်လို ပြဿနာကို ဖြေရှင်းပေးလဲ (Code တွေ ထပ်နေတာ) သိရှိဖို့နဲ့ အခြေခံ Generic Function လေးတစ်ခု ရေးတတ်ဖို့ ဖြစ်ပါတယ်။
ခုနကလို Code တွေ ထပ်နေတဲ့ ပြဿနာကို ဖြေရှင်းဖို့အတွက် Generics ဆိုတာက ကူညီပေးနိုင်တယ်။ စဉ်းစားကြည့်ဗျာ… Function တစ်ခုကို Data အမျိုးမျိုး (number၊ string) ထည့်သုံးချင်ရင် Parameter တွေ ပေးရတယ်။ Generics က အဲဒီလိုပဲ Function ကို Type အမျိုးမျိုး ထည့်သုံးလို့ရအောင် ကူညီပေးတာ။ သူတို့က Code ရေးတဲ့အချိန်မှာ ဘယ် Type ဖြစ်မလဲဆိုတာ မသိသေးခင် Type တွေအတွက် နေရာယူထားတဲ့ Placeholder လေးတွေ၊ ဒါမှမဟုတ် Type တွေကို ကိုယ်စားပြုတဲ့ Variable လေးတွေပါပဲ။
// ၁။ Function နာမည်ရဲ့ နောက်မှာ Generic Type Variable <T> ကို ကြေညာမယ်။// ၂။ လက်ခံမယ့် argument ရဲ့ Type ကို T လို့ သုံးမယ်။// ၃။ ပြန်ထုတ်မယ့် return Type ကိုလည်း T လို့ သုံးမယ်။
function identity<T>(arg: T): T {console.log(`received data's Type: undefined`);return arg;}
- <T>: ဒါက ပြောလိုက်တာက ‘ဒီ identity Function က Generic ဖြစ်တယ်၊ Type တစ်ခုခုနဲ့ အလုပ်လုပ်မယ်၊ အဲဒီ Type ကို အခုတော့ T လို့ ခေါ်ထားမယ်’ ပေါ့။
- arg: T: Function ကို လက်ခံမယ့် arg ဆိုတဲ့ Data ရဲ့ Type က T ကိုယ်စားပြုတဲ့ အဲဒီ Type ပဲ ဖြစ်လိမ့်မယ်။
- : T: Function က ပြန်ထုတ်ပေးမယ့် တန်ဖိုးရဲ့ Type ကလည်း T ကိုယ်စားပြုတဲ့ အဲဒီ Type အတိုင်း ပဲ ဖြစ်လိမ့်မယ်။