[typescript] 타입 가드 함수를 사용하여 타입 오류 해결하기

타입스크립트에서는 자바스크립트와 마찬가지로 동적 타입 방식을 지원합니다. 때때로 변수나 속성의 타입을 정확히 알 수 없는 경우가 있습니다. 이때 타입스크립트에서는 타입 가드(type guard) 함수를 사용하여 이러한 상황을 처리할 수 있습니다.

타입 가드란?

타입 가드는 런타임에서 변수나 속성의 타입을 확인하고, 해당 타입에 따라 동작을 다르게 할 수 있는 함수입니다. 주로 타입스크립트의 유니언 타입을 활용할 때 유용하게 쓰입니다.

타입 가드 함수 활용하기

아래는 User라는 인터페이스와 Admin이나 Guest라는 유니언 타입을 가진 user 변수가 있다고 가정해봅시다.

interface User {
  name: string;
  role: 'admin' | 'guest';
}

function isAdmin(user: User): user is Admin {
  return user.role === 'admin';
}

// 사용 예시
let user: User = {name: 'John', role: 'admin'};

if (isAdmin(user)) {
  console.log(user.name + ' is an admin');
} else {
  console.log(user.name + ' is a guest');
}

위의 예시에서 isAdmin 함수는 user 객체의 role'admin'인지를 확인하고, user is Admin 형태의 리턴 타입을 통해 타입 가드 역할을 합니다. 이렇게 하면 타입스크립트 컴파일러는 isAdmin 함수를 통해 타입 가드를 수행한 이후에 user 객체가 Admin 타입으로 변환된다는 것을 알고, 해당 블록 내에서 userAdmin으로 취급합니다.

이처럼 타입 가드 함수를 사용하면 유니언 타입과 함께 더욱 강력한 타입 추론을 활용할 수 있습니다.

결론

타입 가드 함수는 유니언 타입과 함께 사용하여 코드의 가독성과 안정성을 높일 수 있는 강력한 도구입니다. 타입 가드의 활용을 통해 타입 오류를 사전에 방지하고 코드의 예외 상황을 줄일 수 있습니다.


참고 문헌: