[typescript] 타입 가드 함수의 커스텀 타입 가드와의 차이점

타입스크립트에서 타입 가드 함수커스텀 타입 가드는 모두 타입을 검사하고 제한하는 데 사용됩니다. 그러나 두 가지 방식에는 몇 가지 중요한 차이점이 있습니다.

타입 가드 함수

타입 가드 함수는 보통 함수 시그니처와 유사하게 작성됩니다. 예를 들어, 다음은 isNumber 타입 가드 함수의 예시입니다.

function isNumber(value: any): value is number {
  return typeof value === 'number';
}

이 함수는 value is number 형식의 반환 타입을 갖고 있습니다. 이것은 일반적인 함수 시그니처가 아니고 타입 가드 함수임을 나타냅니다. 이 함수를 사용하여 해당 변수가 숫자인지 검사하고, 그 결과에 따라 타입을 제한할 수 있습니다.

커스텀 타입 가드

커스텤 타입 가드는 클래스의 메서드로 구현됩니다. 다음은 isDog 커스텀 타입 가드의 예시입니다.

class Animal {
  isDog(value: any): value is Dog {
    return value instanceof Dog;
  }
}

이 메서드는 value is Dog 형식의 반환 타입을 갖고 있으며, Animal 클래스에 속한 메서드로 선언되어 있습니다. 이 함수를 사용하여 해당 변수가 Dog 타입인지 검사하고, 그 결과에 따라 타입을 제한할 수 있습니다.

두 가지 방법의 차이점

주된 차이점은 사용 방식적용 범위입니다. 타입 가드 함수는 어떤 함수나 메서드 안에서 또는 다른 모듈에서 사용할 수 있지만, 커스텀 타입 가드는 해당 클래스 내에서만 사용할 수 있습니다.

따라서, 타입 가드 함수는 라이브러리나 프레임워크에서 타입 가드를 공통으로 사용하거나 재사용할 수 있을 때 유용하며, 커스텀 타입 가드는 특정 클래스나 인터페이스에 맞춤화된 타입 가드를 만들고자 할 때 유용합니다.

두 가지 방식은 각각의 상황에 맞게 사용될 수 있으며, 타입 가드를 효과적으로 활용하기 위해서는 두 가지 방식의 차이점을 잘 이해하고 활용하는 것이 중요합니다.

이상으로 타입 가드 함수커스텀 타입 가드의 차이점에 대해 알아보았습니다. 감사합니다.

참고 자료