Skip to content
GitHub

Utility Type များကို မိတ်ဆက်ခြင်း: Type ပြောင်းလဲခြင်း ကိရိယာများ

ဘာလို့ လိုအပ်တာလဲ: Type ပုံစံ ကွဲပြားမှုများ လိုအပ်လာခြင်း

Section titled “ဘာလို့ လိုအပ်တာလဲ: Type ပုံစံ ကွဲပြားမှုများ လိုအပ်လာခြင်း”

အရင် သင်ခန်းစာတွေမှာ Code တွေကို Flexible (ပြောင်းလဲ အသုံးပြုလို့ရအောင်) ရေးနည်း သင်ခဲ့ပြီးပြီနော်။ အခု Type တွေ ကိုယ်တိုင်ကို Flexible ဖြစ်အောင် ဘယ်လို လုပ်မလဲဆိုတာ ဆက်ပြောရအောင်။

လက်တွေ့ လုပ်ငန်းခွင်မှာ ကျွန်တော်တို့က User လိုမျိုး အဓိက Type (Base Type) တစ်ခုကို သတ်မှတ်ထားလေ့ ရှိပါတယ်။ ဒါပေမဲ့ နေရာတိုင်းမှာ အဲ့ဒီ User Type အပြည့်အစုံကြီးကို သုံးလို့ အဆင်မပြေပါဘူး။ အလုပ်လုပ်ပုံ မတူညီတဲ့ နေရာတွေအတွက် ဒီ User Type ကို နည်းနည်းစီ ပြောင်းလဲပြီး သုံးဖို့ လိုအပ်လာတတ်ပါတယ်။ ဥပမာ -

  • User ရဲ့ အချက်အလက် တချို့ကိုပဲ (ဥပမာ - နာမည်နဲ့ အီးမေးလ်) ပြင်ဆင်ချင်တဲ့အခါ သုံးဖို့ Type တစ်မျိုး။
  • User ရဲ့ အချက်အလက် အားလုံးကို မဖြစ်မနေ လိုအပ်တဲ့အခါ သုံးဖို့ Type တစ်မျိုး。
  • User ရဲ့ Configuration Object တွေကို နောက်ထပ် ပြင်လို့ မရအောင် (Read-only) လုပ်ချင်တဲ့အခါ သုံးဖို့ Type တစ်မျိုး。
  • User ရဲ့ အချက်အလက်တွေထဲက လျှို့ဝှက်ချက်တွေ (ဥပမာ - Password) ကို ဖယ်ထုတ်ပြီးမှ မြင်ချင်တဲ့အခါ သုံးဖို့ Type တစ်မျိုး။

ဒီလို အခြေအနေ တစ်ခုချင်းစီအတွက် ကိုယ်တိုင် Type အသစ်တွေ အများကြီး လိုက်ပြီး ကြေညာပေးလို့ ရပါတယ်။ ဥပမာ - UserForUpdate, FullUser, ReadonlyUserConfig လိုမျိုးပေါ့။ ဒါပေမဲ့ Type တွေ အများကြီး ဖြစ်လာရင် ကိုယ်တိုင် လိုက်ရေးရတာ လက်ညောင်းသလို၊ မှားဖို့လည်း အရမ်း လွယ်ကူသွားပါတယ်။ ပြီးတော့ မူရင်း User Type မှာ အချက်အလက် တစ်ခုခု ထပ်ထည့်တာ၊ ဒါမှမဟုတ် ပြောင်းလဲလိုက်တာနဲ့ တခြား ကိုယ်တိုင် လိုက်ရေးထားတဲ့ Type တွေ အကုန်လုံးမှာပါ လိုက်ပြင်ဖို့ မေ့သွားတတ်ပါတယ်။ ဒါဟာ သပ်ရပ်မှု လုံးဝ မရှိတဲ့ နည်းလမ်းပါ။

ဘာလဲဆိုတော့: Utility Type တွေ ရောက်လာခြင်း

Section titled “ဘာလဲဆိုတော့: Utility Type တွေ ရောက်လာခြင်း”

ဒီလို ပြဿနာတွေကို ဖြေရှင်းဖို့ Utility Types တွေက ကူညီဖို့ ရောက်လာတာပါ။ သူတို့က Type တွေအတွက် TypeScript ကနေ အသင့်လုပ်ပေးထားတဲ့ ကိရိယာ (Tools) တွေ လိုပါပဲ။ သူတို့က ရှိပြီးသား မူရင်း Type (ဥပမာ - User Type) ကို အခြေခံအဖြစ် ယူလိုက်ပြီး၊ ကိုယ်လိုချင်တဲ့အတိုင်း ပြောင်းလဲထားတဲ့ Type အသစ်တစ်ခုကို အလိုအလျောက် ပြန်ထုတ်ပေးပါတယ်။

ဥပမာ နှိုင်းယှဉ်ချက်: “သင့်မှာ သစ်သားတုံး (သင့်ရဲ့ အဓိက မူရင်း Type) လေး တစ်တုံး ရှိတယ်လို့ စိတ်ကူးကြည့်ပါ။ Utility Types တွေက သင့်ရဲ့ လက်သမားဖိုထဲက ကိရိယာတွေ (Tools) နဲ့ တူပါတယ်။”

  • သစ်သားတုံးထဲက ကိုယ်လိုချင်တဲ့ အပိုင်းလေးတွေကို ရွေးထုတ်ဖို့ (Pick) ဒါမှမဟုတ် မလိုချင်တာတွေ ချန်ထားခဲ့ဖို့ (Omit) သုံးတဲ့ လွှ လိုမျိုး။
  • သစ်သားတုံးရဲ့ နေရာအားလုံးကို မဖြစ်မနေ မဟုတ်ဘဲ၊ လိုအပ်မှသာ (Optional) ပါဝင်အောင် (Partial) ပြုပြင်ပေးတဲ့ စက္ကူပွတ်စက် လိုမျိုး။
  • သစ်သားတုံးကို ထပ်ပြီး ပြင်ဆင်လို့ မရအောင် (Readonly) ကာကွယ်ပေးတဲ့ အရောင်တင်ဆီ လိုမျိုး။

ကောင်းကျိုးများ: ဘာလို့ သုံးသင့်သလဲ?

Section titled “ကောင်းကျိုးများ: ဘာလို့ သုံးသင့်သလဲ?”
  • DRY (Don’t Repeat Yourself): အဓိက မူရင်း Type ကို တစ်နေရာတည်းမှာပဲ တစ်ခါတည်း သေချာ ရေးထားပြီး၊ သူ့ဆီကနေ လိုအပ်တဲ့ Type မျိုးစုံကို အလွယ်တကူ ထုတ်ယူ သုံးစွဲနိုင်ပါတယ်။
  • ထိန်းသိမ်းရ လွယ်ကူခြင်း: အဓိက မူရင်း Type ကို ပြင်ဆင်လိုက်တာနဲ့ သူ့ဆီကနေ အခြေခံပြီး လုပ်ထားတဲ့ (Utility Types နဲ့ ယူထားတဲ့) Type တွေ အကုန်လုံးကပါ အလိုအလျောက် လိုက်ပြောင်းသွားမှာ ဖြစ်ပါတယ်။
  • ရှင်းလင်း ပြတ်သားမှု: Type ရဲ့ နာမည်ကို ကြည့်လိုက်တာနဲ့ သူက ဘာလဲဆိုတာကို ချက်ချင်း သိနိုင်ပါတယ် (ဥပမာ - Partial<User> ဆိုတာ “User Type ရဲ့ အချက်အလက် တချို့သာ ပါဝင်နိုင်တဲ့ Type” ဆိုတာကို အလွယ်တကူ သိစေပါတယ်)။
  • Type Safety: Type တွေကို ပြောင်းလဲ လုပ်ဆောင်တာတွေက လုံခြုံစိတ်ချရပြီး မှားယွင်းမှု မရှိအောင် TypeScript က သေချာ ထိန်းချုပ်ပေးထားပါတယ်။
  • အသင့် ပါဝင်ပြီးသား: TypeScript ထဲမှာ အသင့် ပါဝင်ပြီးသား (Built-in) ဖြစ်တဲ့အတွက် ဘာ Package မှ ထပ်ပြီး Install လုပ်နေစရာ မလိုပါဘူး။