type을 확인하는 isUser
와 isAdmin
이 있다.
버그 없애줘!
🔻 강제 캐스팅. 돌아가지만 마음이 불편하다. as
를 쓰고 싶지 않다.
export function logPerson(person: Person) {
let additionalInformation: string = '';
if (isAdmin(person)) {
const newPerson = person as Admin;
additionalInformation = newPerson.role;
}
if (isUser(person)) {
const newPerson = person as User;
additionalInformation = newPerson.occupation;
}
console.log(` - ${person.name}, ${person.age}, ${additionalInformation}`);
}
🔻 공식적인 답안
export function isAdmin(person: Person):person is Admin {
return person.type === 'admin';
}
export function isUser(person: Person):person is User {
return person.type === 'user';
}
parameterName is Type
함수의 파라미터가 Type이라면, Type으로 리턴한다.
function isFish(pet: Fish | Bird): pet is Fish {
return (pet as Fish).swim !== undefined;
}
참고 자료