타입스크립트에서 타입 가드 함수와 커스텀 타입 가드는 모두 타입을 검사하고 제한하는 데 사용됩니다. 그러나 두 가지 방식에는 몇 가지 중요한 차이점이 있습니다.
타입 가드 함수
타입 가드 함수는 보통 함수 시그니처와 유사하게 작성됩니다. 예를 들어, 다음은 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 타입인지 검사하고, 그 결과에 따라 타입을 제한할 수 있습니다.
두 가지 방법의 차이점
주된 차이점은 사용 방식과 적용 범위입니다. 타입 가드 함수는 어떤 함수나 메서드 안에서 또는 다른 모듈에서 사용할 수 있지만, 커스텀 타입 가드는 해당 클래스 내에서만 사용할 수 있습니다.
따라서, 타입 가드 함수는 라이브러리나 프레임워크에서 타입 가드를 공통으로 사용하거나 재사용할 수 있을 때 유용하며, 커스텀 타입 가드는 특정 클래스나 인터페이스에 맞춤화된 타입 가드를 만들고자 할 때 유용합니다.
두 가지 방식은 각각의 상황에 맞게 사용될 수 있으며, 타입 가드를 효과적으로 활용하기 위해서는 두 가지 방식의 차이점을 잘 이해하고 활용하는 것이 중요합니다.
이상으로 타입 가드 함수와 커스텀 타입 가드의 차이점에 대해 알아보았습니다. 감사합니다.