
사전적 정의 : 일반적인, 포괄적인
사전적 정의로 봤을 때, 제네릭 함수란 모든 타입의 값을 다 적용할 수 있는 포괄적인 함수라고 이해할 수 있다.
function func<T>(value: T): T {
return value;
}
const str = func("hello");
위의 코드는 제네릭 함수로 선언하는 문법이다.
위의 코드를 실행하게 되면 결론적으로 함수의 타입은 함수가 실행될 때 결정되게 된다.
함수가 호출되면서 함수의 파라미터에 값이 전달되게 되고, 그 값에 대한 타입으로 함수의 타입이 결정되는 방식이다.
만약, 튜플과 같은 특정 타입에 대한 직접적인 명시를 하고 싶다면
function func<T>(value: T): T {
return value;
}
let arr = func<[number, number, number]>([1, 2, 3]);
위와 같이 함수 호출부에 꺽새로 특정 타입을 명시해주면 된다.
출처 : 인프런 - 한 입 크기로 잘라먹는 타입스크립트