Generic은 재사용 가능한 컴포넌트를 구축하기 위해 주로 사용되는 기능입니다.
TS에서 함수를 선언할 경우 특정 타입을 주어야 합니다.
function someFunction(arg: string) : string {
return arg;
}
하지만 위와 같이 정의 할 경우 오직 string 타입에만 사용이 가능하기때문에 재사용이 가능한 컴포넌트를 구축하기 위해서는 아래와 같이 정의할 필요가 있습니다.
function someFunction(arg: any) : any {
return arg;
}
하지만 위와같이 선언할 경우 실제로 함수가 어떠한 값을 받고 반환할지에 대한 정보를 잃게 됩니다. 그렇기 때문에 그러한 문제점을 해결하기 위해서 generic을 사용하여 그러한 문제점을 해결 할 수 있습니다.
function someFunction<T>(arg: T) : T {
return arg;
}
다음과 같이 함수를 정의할 경우 함수를 사용할때에 사용할 타입을 설정이 가능해집니다. 이렇게 제네릭을 사용해 정의함으로써 어떠한 값을 받고 반환할지에 대한 정보도 보존할 수 있으며, 재사용 가능한 컴포넌트 구축이 가능해집니다.