[typescript] instanceof 키워드를 이용한 타입 가드 함수 작성 방법

TypeScript는 instanceof 키워드를 사용하여 객체의 타입을 체크하는 강력한 기능을 제공합니다. 이 기능을 활용하여 객체의 타입을 보다 정확하게 판별하고 다양한 메서드들을 사용할 수 있습니다. 이번 글에서는 instanceof 키워드를 이용한 타입 가드 함수를 작성하는 방법에 대해 살펴보겠습니다.

타입 가드 함수란?

타입 가드 함수는 특정 조건을 만족하는 경우 TypeScript가 변수의 타입을 추론하도록 도와주는 함수입니다. instanceof 키워드를 사용한 타입 가드 함수를 작성하면, 객체의 타입을 명시적으로 체크할 수 있고, 그에 맞는 타입으로 변수를 사용할 수 있습니다.

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
}

class Dog extends Animal {
  breed: string;
  constructor(name: string, breed: string) {
    super(name);
    this.breed = breed;
  }
}

class Cat extends Animal {
  color: string;
  constructor(name: string, color: string) {
    super(name);
    this.color = color;
  }
}

function isDog(animal: Animal): animal is Dog {
  return animal instanceof Dog;
}

function isCat(animal: Animal): animal is Cat {
  return animal instanceof Cat;
}

위의 예제에서 isDogisCat 함수는 각각 DogCat 타입을 체크해서 truefalse를 반환합니다. 이 함수들은 animal is Doganimal is Cat 형태로 작성되어 있습니다.

사용 예제

function getPetDescription(animal: Animal): string {
  if (isDog(animal)) {
    return `${animal.name} is a ${animal.breed} dog`;
  }
  if (isCat(animal)) {
    return `${animal.name} is a ${animal.color} cat`;
  }
  return `${animal.name} is an unknown animal`;
}

위의 getPetDescription 함수에서, isDogisCat 함수를 통해 animal의 타입을 체크하고, 이에 따라 적절한 설명을 반환합니다.

마치며

instanceof 키워드를 이용한 타입 가드 함수를 작성하면, TypeScript에서 객체의 타입을 보다 정확하게 판별하여 안정적인 코드를 작성할 수 있습니다. 이를 통해 코드의 가독성과 유지보수가 향상되며, 타입 관련 오류를 방지할 수 있습니다.

참고 자료: TypeScript 공식 문서 - 타입 가드

이상으로 instanceof 키워드를 이용한 타입 가드 함수 작성 방법에 대해 알아보았습니다. 이를 통해 TypeScript 코드를 보다 안전하게 작성하고 다양한 타입을 다룰 수 있게 되었습니다.