# TypeScript Predicate Guard

<figure><img src="https://4062235122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7tekcoDYDaKhlNreT5uK%2Fuploads%2FvMIvixhSc0vHrmc10ZeS%2FTypescript%20Is%20Predicate.png?alt=media&#x26;token=f09f09e7-3ce6-4113-bed2-0a08b5b964d5" alt=""><figcaption></figcaption></figure>

"is" Type Predicates ကို type narrowing လုပ်ဖို့ အသုံးပြုပါတယ်။

function တစ်ခုက parameter တစ်ခုကို လက်ခံပြီး Narrowing လုပ်ဖို့အတွက် ကိုယ်ပြောင်းလဲချင်တဲ့ Target Type တစ်ခုကို သတ်မှတ်ပေးလိုက်တာဖြစ်ပါတယ် ။

ရေးသားနည်း Syntax အရ `(param: type) => param is TargetType ;` ဖြစ်ပေ့မယ်&#x20;

အမှန်တကယ် Return type က Boolean ပဲ ပြန်ရပါမယ် ။

<figure><img src="https://4062235122-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7tekcoDYDaKhlNreT5uK%2Fuploads%2F7AUtJLrd75h0T9MWhVYO%2FTypescript%20Is%20Predicate%20Code.png?alt=media&#x26;token=71b3309b-e617-4ce7-b475-b21826f3d239" alt=""><figcaption></figcaption></figure>

နမူနာ Code မှာ `checkIsAdmin` ဆိုတဲ့ function ရှိပါတယ် ။&#x20;

ရည်ရွယ်ချက်က checkIsAdmin ကို ခေါ်လိုက်တာနဲ့ လက်ခံလိုက်တဲ့ user parameter အခြေအနေက true ဖြစ်ခဲ့ရင် သူ့ရဲ့ `Type` ကို AdminUser type အဖြစ်ပြောင်းပေးလိုက်မှာပါ ။

`actionForAdmin` မှာ လက်ခံထားတဲ့ user parameter က အစမှာ AdminUser (သို့မဟုတ် | ) Normal User ပါ ။

if ( checkIsAdmin(user) ) block အတွင်းမှာ user ကို mouse ဖြင့် ထောက်ပြီး ကြည့်ကြည့်တဲ့အခါ AdminUser type အဖြစ် Assertion လုပ်သွားမှာဖြစ်ပါတယ် ။
