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

TypeScript에서는 값의 타입을 더욱 정확하게 추론하고자 할 때 타입 가드 함수를 사용할 수 있습니다. 타입 가드 함수를 활용하면 실행 시간에 발생할 수 있는 예기치 않은 동작을 사전에 방지하고 타입 안정성을 향상시킬 수 있습니다.

타입 가드 함수란?

타입 가드 함수는 주어진 값이 특정 타입인지 검사하여 해당 값을 해당 타입으로 변환하는 함수입니다. 이를 통해 해당 값의 타입을 보다 구체적으로 추론하고 조작하여 정적 타입 검사를 더욱 강화할 수 있습니다.

function isString(value: any): value is string {
  return typeof value === 'string';
}

위 코드에서 isString 함수는 주어진 value가 문자열인지를 검사하고 해당 값이 문자열이라면 true를 반환합니다.

사용 예시

typeof 검사

function capitalize(str: string | number): string {
  if (typeof str === 'string') {
    return str.toUpperCase();
  }
  // 여기서 str은 number 타입이다.
  return ''; // 빈 문자열을 반환
}

instanceof 검사

class Car {
  drive() {
    return 'Driving';
  }
}

class Bike {
  cycle() {
    return 'Cycling';
  }
}

function moveVehicle(vehicle: Car | Bike) {
  if (vehicle instanceof Car) {
    return vehicle.drive();
  } else {
    return vehicle.cycle();
  }
}

in 연산자를 통한 프로퍼티 존재 여부 검사

interface Square {
  size: number;
}

interface Rectangle {
  width: number;
  height: number;
}

function isSquare(shape: Square | Rectangle): shape is Square {
  return 'size' in shape;
}

결론

타입 가드 함수를 사용하여 TypeScript 코드의 타입 안정성을 향상시킬 수 있습니다. 이를 통해 런타임에서 예상치 못한 동작이 발생하는 것을 방지하고 보다 안전한 코드를 작성할 수 있습니다.

더 많은 정보를 원하시거나 타입 가드 함수 관련하여 궁금한 점이 있으시다면 TypeScript 공식 문서를 참고하시기 바랍니다.