제네릭타입이란
Documentation - Generics
Types which take parameters
www.typescriptlang.org
제네릭타입이란이란 데이터의 타입을 일반화한다(generalize)한다는 것을 뜻한다. Generic은 자료형을 정하지 않고 여러 타입을 사용할 수 있게 해준다.
즉, 선언 시점이 아니라 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다. 한번의 선언으로 다양한 타입에 '재사용'이 가능하다는 장점이 있다.
제네릭 타입은 함수, 클래스, 인터페이스 등에서 사용할 수 있다. 제네릭 타입을 사용하면 함수나 클래스를 호출할 때, 인자로 전달된 값의 타입에 따라 타입 추론을 통해 타입이 결정된다.
제네릭 타입은 다음과 같은 형태로 작성된다.
function 함수명<T>(매개변수: T): T {
// 함수 내부 로직
}
class 클래스명<T> {
// 클래스 내부 로직
}
interface 인터페이스명<T> {
// 인터페이스 내부 로직
}
여기서 T는 타입 매개변수로, 함수나 클래스에서 사용할 타입의 이름을 정의한다. T 대신에 다른 이름을 사용할 수도 있다. 타입 매개변수를 사용하면, 함수나 클래스가 다양한 타입에서 동작할 수 있도록 만들 수 있다.
예를 들어, 다음과 같이 T 타입 매개변수를 사용하여 배열의 요소를 뒤집는 함수를 작성할 수 있다.
function reverse<T>(array: T[]): T[] {
return array.reverse();
}
const numberArray = [1, 2, 3, 4, 5];
const reversedNumberArray = reverse<number>(numberArray); // [5, 4, 3, 2, 1]
const stringArray = ['a', 'b', 'c'];
const reversedStringArray = reverse<string>(stringArray); // ['c', 'b', 'a']
위 예제에서 reverse 함수의 타입 매개변수 T는 배열의 요소 타입을 나타낸다. 함수를 호출할 때, <number>와 <string>을 사용하여 각각 숫자 배열과 문자열 배열에 대해 타입을 지정한다. 함수 내부에서는 T[] 타입으로 배열을 받고, array.reverse()를 사용하여 배열을 뒤집은 후 T[] 타입으로 반환합니다.
*참고자료
TypeScript | Generic 제네릭 (feat. TypeScript 두 달차 후기)
타입스크립트 제네릭의 여러 사용 방법에 대해 정리해봅니다.
velog.io