제네릭(Generic) 이란 ?

제네릭(Generic)은 타입을 미리 정의하지 않고 사용하는 시점에서 원하는 타입을 정의해서 쓸 수 있도록하는 문법입니다.

마치 함수의 파라미터와 같은 역할을 하며, 인자에 넘긴 값을 함수의 파라미터로 받아 함수 내부에서 그대로 사용하는 것처럼 동작하게 됩니다.

제네릭을 사용하면 불필요한 중복되는 타입 코드를 줄이고, 코드 자동완성도 활용할 수 있습니다.

제네릭 사용 예시 코드

제네릭은 먼저 함수 이름 오른쪽에 를 붙인후 파라미터를 닫는 괄호 오른쪽에 콜론(:)을 붙이고 T를 붙입니다.

파라미터 타입을 T로 정의합니다.(T값은 원하는대로 사용해도 됩니다. 관례상 주로 T(type)로 사용됩니다.)

이렇게 정의 제네릭은 함수 실행시점에서 파라미터로 받은 타입을 적용시켜줍니다.

타입은 함수명뒤<>를 이용하여 전달합니다. T로 정의한 부분에 타입이 들어가게됩니다.

function getText<T>(text:T): T {
	return text;
}

// <>로 전달받은 타입을 적용
getText<string>('hi');
getText<number>(10);

제네릭을 사용하는 이유

제네릭을 불필요한 타입 중복사용을 줄이고, 코드 자동완성을 활용할 수 있도록 합니다.

1 ) 불필요한 중복타입 사용 줄이기

제네릭을 사용하지 않는 경우에는 아래와 같은 타입마다 함수를 재생성 해야합니다.

제네릭 사용시 이런 불필요한 중복사용을 줄일 수 있습니다.

  function getBoolean(bool:boolean):boolean {
  	retun bool
  }

   function getBoolean(str:string):string {
  	retun str
  }

   function getBoolean(num:number):number {
  	retun number
  }

  // 제네릭을 활용하여 불필요한 중복코드 사용 제거
  function getSomting<T>(something:T):T {
  	retrun something;
  }

2 ) 코드 자동완성 활용

제네릭 타입으로 불필요한 코드 사용을 줄일 수 있습니다. 물론 이것을 any 타입을 사용하여 구현할 수 있습니다.