Skip to content
GitHub

ပိုအစွမ်းထက်တဲ့ ကိရိယာများ(Generics, Utility Types)

ဒီလို အခက်အခဲတွေကို ဖြေရှင်းဖို့ TypeScript မှာ ပိုအစွမ်းထက်တဲ့ ကိရိယာတွေ ရှိတယ်။ အဲဒါတွေကတော့ Generics, Utility Types, နဲ့ satisfies Keyword တွေပဲ ဖြစ်တယ်။

Code တစ်ခုတည်းကိုပဲ Data Type အမျိုးမျိုးနဲ့ ပြန်လည် အသုံးပြုနိုင်အောင် လုပ်ပေးတယ်။ Code တွေ ထပ်ရေးရတာ သက်သာသွားတယ်။ (ပုံစံတူ လုပ်ဆောင်ချက်ကိုပဲ မတူညီတဲ့ Type တွေနဲ့ သုံးနိုင်စေတဲ့ မှော်ဆန်တဲ့ Box လိုမျိုးပေါ့။)

  • ရှိပြီးသား Data ပုံစံ (Type) တွေကနေ လိုအပ်သလို ပြောင်းထားတဲ့ Data ပုံစံအသစ်တွေ (Type အသစ်တွေ) ကို အလွယ်တကူ မြန်မြန် ဖန်တီးနိုင်စေတယ်။ (Data ပုံစံတွေကို အမြန် ပြင်ဆင်နိုင်တဲ့ ကိရိယာမျိုးစုံ ပါတဲ့ Box လိုမျိုးပေါ့။)

ဥပမာ၊ အရင် သင်ခန်းစာက Code တွေ ထပ်နေတဲ့ ပြဿနာ (Type အမျိုးမျိုးအတွက် Array ထဲက ပထမဆုံး Element ယူတဲ့ Function ကို ခွဲရေးရတာ) ကို မှတ်မိသေးလား?”

“အဲဒီလို ပြဿနာမျိုးအတွက် Generics ဆိုတာကို သုံးလို့ရတယ်။ Generics နဲ့ဆို အဲဒီ ပထမဆုံး Element ယူတဲ့ Function ကို Code တစ်ကြောင်းတည်းနဲ့ Type အမျိုးမျိုးအတွက် လွယ်လွယ်လေး ရေးလို့ရပြီ။ အောက်က Code လေးကို ကြည့်လိုက်ပါ။”

index.ts
function getFirst<T>(arr: T[]): T | undefined {
return arr[0];
}
// အခုဆို ဒီ getFirst Function လေးကို Type အမျိုးမျိုးနဲ့ သုံးလို့ရပြီ
let firstNumber = getFirst([1, 2, 3]); // number Array နဲ့ သုံးလို့ရပြီ
// firstNumber ရဲ့ Type က number | undefined လို့ TypeScript က သိတယ်
let firstString = getFirst(["a", "b", "c"]); // string Array နဲ့လည်း သုံးလို့ရပြီ
// firstString ရဲ့ Type က string | undefined လို့ TypeScript က သိတယ်
interface User { name: string; age: number; }
let users: User[] = [{ name: "Alice", age: 30 }, { name: "Bob", age: 25 }];
let firstUser = getFirst(users); // ကိုယ်ပိုင် Object Array နဲ့လည်း သုံးလို့ရပြီ
// firstUser ရဲ့ Type က User | undefined လို့ TypeScript က သိတယ်