제네릭 소개

함수나 인터페이스, 타입 별칭, 클래스 등을 다양한 타입과 함께 동작하도록 만들어 주는 기능이다.

제네릭(Generic) 함수

function func<T>(value: T): T {
  return value;
}

let num = func(10);
// number 타입

T에 어떤 타입이 할당될 지는 함수가 호출될 때 결정된다.

위의 경우 인자로 숫자형이 들어왔으므로, T가 사용된 모든 곳에 number형으로 타입을 추론하게 된다.

제네릭 함수를 호출할 때 다음과 같이 타입 변수에 할당할 타입을 직접 명시하는 것도 가능하다.

function func<T>(value: T): T {
  return value;
}

let arr = func<[number, number, number]>([1, 2, 3]);

타입 변수 응용하기

#1

2개의 타입 변수가 필요한 상황이라면 2개의 타입 변수를 사용하면 된다.

function swap<T, U>(a: T, b: U) {
  return [b, a];
}

const [a, b] = swap("1", 2);