タイプ保護(Type Guard)


タイプ保護(Type Guard)


タイプ範囲を特定のタイプで縮小(フィルタ)するプロセス

説明に使用する辞書の例

interface Developer{
    name: string;
    skill: string;
}

interface Person {
    name: string;
    age: number;
}

function introduce(): Developer | Person{
    return {name: 'Tony', age: 33, skill:"Iron Making"}
}

let tony = introduce();
console.log(tony.skill); // 유니온 특징에 의해 접근 불가

// 타입 단언을 사용하여 접근
if((tony as Developer).skill){
    let skill = (tony as Developer).skill;
    console.log(skill);
} else if(tony as Person).age){
    let age = (tony as Developer).age;
    console.log(age);
}
  • 毒性が低い.
  • タイプガードを使うと

  • isキーワード使用
  • function isDeveloper(target: Developer | Person): target is Developer {
        return (target as Developer).skill !== undefined; // target이 skill 이라는 것이 있을 경우, Developer 취급 한다.
    }
    
    if(isDeveloper(tony)){
        tony.skill
    } else{
        tony.age
    }

    リファレンス

  • インフラストラクチャ