[typescript] 타입 가드 함수를 사용하여 타입 안정성 향상하기

타입스크립트(TypeScript)에서는 자바스크립트의 동적 타입 변환을 보완하고, 런타임 에러를 줄이기 위해 정적 타입 체크를 제공합니다. 하지만 때로는 변수의 타입을 정확히 추론하지 못하는 상황이 발생할 수 있습니다. 이때 타입 가드 함수를 사용하여 타입 안정성을 높일 수 있습니다.

타입 가드 함수란 무엇인가요?

타입 가드 함수는 조건문과 함께 사용되며, 해당 조건을 만족할 때 변수의 타입을 명시적으로 제한하는 역할을 합니다. 이를 통해 컴파일러가 해당 변수의 타입을 더 정확하게 판단할 수 있도록 도와줍니다.

예를 들어, 다음과 같이 instanceof 연산자를 사용한 타입 가드 함수를 작성할 수 있습니다.

function isFish(pet: Fish | Bird): pet is Fish {
  return (pet as Fish).swim !== undefined;
}

위 코드에서 pet is Fish 부분은 타입 가드 함수의 반환 값을 명시적으로 지정하는데, 이는 조건이 충족될 때 해당 변수의 타입을 Fish로 한정시킨다는 의미입니다.

예제: 타입 가드 함수 활용

다음은 타입 가드 함수를 활용한 예제입니다.

interface Fish {
  swim: () => void;
}

interface Bird {
  fly: () => void;
}

function getPet(): Fish | Bird {
  // ...
}

let pet = getPet();

if (isFish(pet)) {
  pet.swim();
} else {
  pet.fly();
}

위 예제에서 getPet 함수는 Fish 또는 Bird를 반환합니다. 이후 isFish 함수를 통해 pet의 타입을 확인하고, 조건에 따라 swim() 또는 fly() 함수를 호출할 수 있습니다.

타입 가드 함수를 사용하면 더욱 정확한 타입 추론을 할 수 있으며, 이를 통해 코드의 안정성을 높일 수 있습니다.


참고문헌: