Generic Type(제네릭 타입)

이민서·2025년 1월 24일

TypeScript

목록 보기
7/7

타입을 명확히 정하여 사용하기 위해 기본 타입들, type이나 interface를 위해 정의한 타입을 이용하였는데, 만약 코드를 호출하는 시점까지 타입을 모르는 경우는 어떨까?
예를 들어, 배열을 만들 때 문자열 배열인지, 숫자 배열이지, 객체가 들어있는 배열인지 모르는 경우가 있다면..

const strArr = new Array("a", "b", "c");
// const strArr: string[]

const numArr = new Array(1, 2, 3);
// const numArr: number[]

생성자 함수를 이용하여 배열을 생성하면 입력값과 반환값의 타입이 유동적이다.
즉, 사용하기 전까지 입력값과 반환값이 정해져 있지 않다는 뜻이다.

const a = new Array<number>(1,2,3)

Array 뒤에 <number>이 제네릭을 사용하는 문법이다.

function add(a:number, b:number){
	return a + b;
}

a와 b는 함수를 호출하기 전까지 값이 정해지지 않은 상태이다.

add(3, 4)

위와 같이 호출시 a는 3, b는 4로 값이 정해지게 된다.

이처럼 제네릭(Generic)은 함수에서의 파라미터처럼 실제로 사용할 때 타입이 정해지도록 하는 방식이다.

아래와 같은 함수를 작성하게 된다면 이 함수는 어떤 타입의 배열이 들어와도 잘 작동한다.

function getFirstElement<T>(arr: T[]): T | undefined {
    return arr[0];
}

const numbers = getFirstElement([1, 2, 3]);              // number 타입 반환
const strings = getFirstElement(["a", "b", "c"]);        // string 타입 반환
const objects = getFirstElement([{ id: 1 }, { id: 2 }]); // { id: number } 타입 반환

0개의 댓글