[typescript] 타입 가드 함수를 활용한 객체 속성의 타입 가드

타입스크립트(TypeScript)에서 타입 가드 함수는 조건문을 통해 특정 타입으로의 타입 추론을 가능하게 해주는데, 이를 활용하여 객체의 속성에 따른 다양한 타입을 안전하게 검사할 수 있다.

타입 가드 함수란?

타입 가드 함수는 주로 유니온 타입을 사용할 때, 조건문을 활용하여 다양한 타입을 구체화시켜주는 함수를 말한다.

예를 들어, 다음과 같이 isString이라는 타입 가드 함수를 선언할 수 있다.

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

위의 함수는 매개변수 val이 문자열인지 여부를 판별하여 boolean 타입으로 반환한다. 또한, val is string 형태로 반환 타입을 명시하여 타입 스스로가 타입 가드 역할을 할 수 있도록 한다.

객체 속성의 타입 가드

타입 가드 함수를 객체의 속성에 적용하여 해당 속성의 타입을 안전하게 검사할 수 있다.

interface Car {
  brand: string;
  model?: string;
}

function isCar(input: any): input is Car {
  return typeof input.brand === 'string' && typeof input.model === 'string';
}

위의 예제에서, isCar 함수는 Car 인터페이스를 사용하여 객체를 검사하며, input is Car 형태로 반환 타입을 명시하여 inputCar 타입임을 타입스크립트에 알리고 있다.

function printCarInfo(car: Car) {
  if (isCar(car)) {
    console.log(`Car brand: ${car.brand}, model: ${car.model}`);
  } else {
    console.log('Invalid car object');
  }
}

const myCar = { brand: 'Tesla', model: 'Model 3' };
printCarInfo(myCar); // 출력: Car brand: Tesla, model: Model 3

위의 예제에서, printCarInfo 함수는 isCar 함수를 통해 객체를 검사한 후 안전하게 해당 속성을 참조하여 사용할 수 있다.

결론

타입 가드 함수를 활용하여 객체의 속성에 대한 타입을 안전하게 검사할 수 있으며, 이를 통해 타입 안정성을 높일 수 있다.

참고자료: 타입 가드(Type Guards)