<aside> 🔹 타입스크립트를 사용하다보면, 선언시에 타입을 지정하기가 어려운 경우가 있다.
</aside>
제네릭은 컴포넌트 또는 함수에서 사용하는 데이터의 타입을 외부에서 지정하는 것을 의미한다. 어떤 타입의 데이터를 사용할 지를 선언 시점이 아니라, 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다. 한번의 선언으로 다양한 타입에 재사용이 가능하다는 장점이 있다.
타입을 하나의 변수처럼 취급하여 유연한 처리가 가능하게 한 것이 제네릭이라 할 수 있다.
제네릭은 아래와 같은 방법으로 선언하여 사용한다. 함수, 클래스, 인터페이스 등 이름 뒤에 <T>
를 선언하고, 파라미터나 멤버에 T로 타입을 명시한다. T는 ‘Template’ 의 약자로 어떤 타입이든 들어올 수 있다. 제네릭명은 관습적으로 대문자 알파벳(T, U, K …)을 사용하는 편이다.
//파라미터와 반환값의 타입을 지정
function lion <T> (x: T): T {
return x
}
class Lion <T> {
name : string;
age : number;
property : T;
}
interface Lion <T>{
name : string;
age : number;
property : T;
}