[typescript] in 타입 가드

TypeScript는 JavaScript의 확장된 버전으로, 정적 유형을 지원하여 코드 안정성을 향상시키는 데 도움을 줍니다. 타입 가드(Type Guards)는 이러한 정적 유형 시스템의 장점을 최대한 활용하기 위한 중요한 요소입니다.

타입 가드란?

타입 가드는 조건문과 함께 사용되어 특정 변수의 유형을 제한하거나 명확하게 하는데 도움을 줍니다. 예를 들어, TypeScript에서 typeof, instanceof, in 등과 같은 특별한 연산자를 사용하여 타입 가드를 구현할 수 있습니다.

typeof 연산자

function printLength(strOrArr: string | string[]) {
  if (typeof strOrArr === 'string') {
    console.log(strOrArr.length); // string 타입으로 확정
  } else {
    console.log(strOrArr.length); // string[] 타입으로 확정
  }
}

instanceof 연산자

class Car {
  drive() {
    console.log('Driving a car');
  }
}

class Bike {
  ride() {
    console.log('Riding a bike');
  }
}

function moveVehicle(vehicle: Car | Bike) {
  if (vehicle instanceof Car) {
    vehicle.drive(); // Car 타입으로 확정
  } else {
    vehicle.ride(); // Bike 타입으로 확정
  }
}

in 연산자

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

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

function move(animal: Fish | Bird) {
  if ('swim' in animal) {
    animal.swim(); // Fish 타입으로 확정
  } else {
    animal.fly(); // Bird 타입으로 확정
  }
}

타입 가드의 장점

타입 가드를 사용하면 런타임에서 타입에 대한 검사를 수행하여 타입 안전성을 확보할 수 있습니다. 또한, 코드의 가독성을 높여 유지보수성을 향상시키는 데 도움이 됩니다.

타입 가드를 이용하면 코드의 안정성과 질을 높일 수 있으며, 비즈니스 로직에서 발생할 수 있는 오류를 사전에 방지할 수 있습니다.

TypeScript를 사용하는 개발자라면 타입 가드를 활용하여 코드의 안정성을 높이고 개발 생산성을 향상시킬 수 있습니다.