[typescript] 타입 가드(type guard)를 통한 데이터 타입의 확정

타입스크립트에서는 변수나 속성의 데이터 타입을 확인하기 위해 타입 가드(Type Guard)를 사용할 수 있습니다. 타입 가드를 사용하면 런타임시 데이터 타입을 확정할 수 있어 유용합니다.

타입 가드란 무엇인가?

타입 가드는 특정 조건을 만족할 때, 타입 시스템이 해당 변수의 데이터 타입을 좁혀나가는 것을 의미합니다. 이를 통해 코드의 안정성을 높일 수 있으며, 타입 안정성을 보장할 수 있습니다.

예를 들어, 다음과 같은 코드에서 typeof 연산자를 사용하여 타입 가드를 적용할 수 있습니다.

function printAll(strs: string | string[] | null) {
  if (typeof strs === "object") {
    for (const s of strs) {
      console.log(s);
    }
  } else if (typeof strs === "string") {
    console.log(strs);
  }
}

위 코드에서 typeof 연산자를 사용하여 strs의 타입을 검사하고, 해당 타입에 따라 다른 동작을 수행하도록 코드를 작성하였습니다.

타입 가드 예시

아래의 예시는 유니온 타입을 가지는 변수를 타입 가드를 사용하여 구체적인 타입으로 확정하는 예시입니다.

type Fish = { swim: () => void };
type Bird = { fly: () => void };

function move(animal: Fish | Bird) {
  if ("swim" in animal) {
    return "It's a fish!";
  }
  return "It's a bird!";
}

위의 move 함수는 animal 매개변수의 타입이 Fish 또는 Bird인 경우에 따라 다른 동작을 수행합니다.

타입 가드를 이용하면 여러 가지 타입을 좁혀나갈 수 있어서 코드를 더욱 안전하고 가독성 있게 작성할 수 있습니다.

마무리

타입 가드를 활용하여 타입 시스템을 보다 견고하게 만들 수 있습니다. 코드를 작성할 때 타입 가드를 적절히 활용하여 더욱 안전하고 확고한 타입을 지정하는 데 도움이 될 것입니다.

더 많은 정보는 타입 가드(Type Guard) 문서를 참고하세요.