타입스크립트에서 제네릭은 코드 재사용성을 높이고 타입 안정성을 보장한다. 함수나 클래스를 작성할 때 사용될 데이터의 값을 미리 지정하지 않고 인자로 전달된 데이터의 타입에 따라 자동으로 타입을 추론하게 된다.
function printLog(text: string): string {
return text;
}
예시의 코드를 string타입과 number타입을 받고싶다면 유니온 타입으로 만들어 사용 해주면 될 것이다.
function printLog(text: string | number): string | number {
return text;
}
이 방법으로 두 타입의 값들을 넣을 수 있는데 이 두 타입 이외의 타입은 입력이 불가하다. 제네릭을 사용하면 다음과 같이 작성할 수 있다.
function printLog<T>(text: T): T {
return text;
}
printLog함수명 옆에 T
라는 변수를 추가했다. T
는 유저가 준 파라미터 타입을 캡처하고 사용할 수 있게 해준다.
인터페이스에서 제네릭 문법을 사용할 수 있다. 이를 이용하면 제네릭의 값에 어떤 값이 들어가는지에 따라 값이 바뀌기 때문에 재사용성을 높일 수 있다.
interface Item<T> {
name: T;
stock: number;
selected: boolean;
}