제네릭 함수와 클래스를 작성할 때 타입을 명확히 지정하거나 사용자가 전달한 값으로부터 타입을 추론하는 것이 중요합니다. 이때, 타입 가드를 사용하면 더욱 효과적으로 타입 추론을 할 수 있습니다.
TypeScript에서 제네릭 타입의 추론을 사용하면 코드를 더 간결하고 유연하게 작성할 수 있습니다.
타입 가드를 사용한 제네릭 타입 추론
보통 제네릭 함수나 클래스에서 타입을 추론하기 위해 입력된 매개변수의 타입을 활용합니다. 이때, 다양한 조건문과 함께 타입 가드를 사용하면 보다 정확한 추론이 가능해집니다.
다음은 Array
의 filter
메소드를 사용해서 타입 가드를 통한 제네릭 타입 추론을 보여주는 예제입니다.
function isString(value: any): value is string {
return typeof value === 'string';
}
function filterStrings<T>(array: T[]): string[] {
return array.filter(isString);
}
const mixedArray = ['hello', 5, 'world', true];
const stringsOnly = filterStrings(mixedArray);
console.log(stringsOnly); // ['hello', 'world']
위 예제에서 isString
함수는 입력된 값이 문자열인지를 체크하고, 해당 조건문을 통과하는 경우 TypeScript는 그 값을 string
으로 추론합니다. 그 결과, filterStrings
함수를 통해 입력된 배열에서 문자열만 필터링하는 동작이 가능해집니다.
제네릭 타입 추론의 한계
제네릭 타입 추론은 다양한 상황에서 유용하지만, 때로는 명시적으로 타입을 선언해야 하는 경우도 있습니다. 특히 복잡한 로직이나 다양한 타입을 다룰 때는 명시적인 타입 선언이 코드의 가독성을 높일 수 있습니다.
결론
타입 가드를 사용한 제네릭 타입 추론은 TypeScript 코드를 보다 안정적이고 간결하게 작성할 수 있는데, 적절한 상황에서 활용한다면 코드의 품질을 향상시킬 수 있습니다. 하지만 모든 상황에 적용하기에는 한계가 있으므로, 신중하게 판단하여 활용해야 합니다.
이 글을 통해 제네릭 타입 추론과 타입 가드에 대한 이해를 높이고, TypeScript 코드를 작성할 때 보다 더 견고한 타입 시스템을 구축할 수 있기를 바랍니다.