타입 단언에서 이어지는 포스팅입니다.
// Refactoring using type guard
// convention : type guard의 method는 is(해당타입)으로 시작
function isDeveloper(target: Developer | Person): target is Developer {
return (target as Developer).skill !== undefined; //skill return
} //넘겨받은 target이 Devloper에 해당하는지 check(명령어: is)
if (isDeveloper(tony)) {
tony.skill;
} else {
tony.age;
}
target
의 type을 interface Union으로 선언합니다. 이때 함수의 반환값의 type을 지정 시,
is (인터페이스)
구문을 통해 타입 가드를 지정합니다.
즉 isDeveloper
가 넘겨받는 target 매개변수의 타입은 Developer
로 가드됨을 의미합니다.
위와 같이 tony 변수를 넘기게 되면, Developer
인터페이스에 국한하여 타입 가드가 이루어집니다.
else 값으로는 Person
인터페이스가 넘어오는 것을 확인할 수 있습니다.