![](https://velog.velcdn.com/images/jh_lee95/post/d35cb35d-1e87-463b-ba29-37c645048e48/image.png)
0. 타입스크립트 제네릭
타입스크립트 제네릭(Generic)
제네릭이란 타입을 마치 함수의 파라미터처럼 사용하는 것을 의미한다.
정적 type 언어는 클래스나 함수를 정의할 때 type을 선언해야 한다.
Generic은 코드를 작성할 때가 아니라 코드를 수행될 때(런타임) 타입을 명시한다.
코드를 작성할 때 식별자를 써서 아직 정해지지 않은 타입을 표시한다.
일반적으로 식별자는 T, U, V 등을 사용한다.
필드 이름의 첫 글자를 사용하기도 한다.
- 제네릭이란? 왜 제네릭을 써야하나?
Generic이란 데이터의 타입을 일반화한다(generalize)한다는 것을 뜻한다.
Generic은 자료형을 정하지 않고 여러 타입을 사용할 수 있게 해준다.
즉, 선언 시점이 아니라 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다. 한번의 선언으로 다양한 타입에 '재사용'이 가능하다는 장점이 있다.
제네릭을 쓰지 않을 경우, 불필요한 타입 변환을 하기 때문에 프로그램의 성능에 악영향을 미치기도 하는데, 제네릭을 사용하게되면 따로 타입 변환을 할 필요가 없어서 프로그램의 성능이 향상되는 장점이 있다. (링크)
- generic이 없다면?
위처럼 generic을 쓰지 않는다면, 1) 타입을 미리 지정하거나 2) any를 이용하여 구현할 수 있다.
1) 타입을 미리 지정하자면, 확실한 타입체크가 이뤄질 수 있겠지만 항상 number라는 타입을 받아야하므로 범용성이 떨어진다.
2) 그렇다고 any를 사용한다면 자료의 타입을 제한할 수 없을 뿐더러, 이 function을 통해 어떤 타입의 데이터가 리턴되는지 알 수 없다.
이런 경우에 사용할 수 있는 것이 제네릭이다.