export function swap<T1,T2>(v1:T1, v2:T2):[T2, T1] {
return [v2, v1];
}
매개변수가 들어오는대로 타입이 결정된다.
이때 두개의 매개변수가 들어오므로 각각 T1, T2 이렇게 타입을 준다,
리턴되는 값이 매개변수가 뒤바뀐 형태이므로 리턴타입 역시 배열의 형태로 타입을 T2, T1으로 한다.
제네릭 첫걸음이 identify라고 한다.(ts 공식문서 왈)
identify 함수란 전달받은 모든 것을 반환한다. 이게 순서가 이래서 정말 'identify' 라는 일종의 예약어가 있는 것처럼 보이지만 반대로 이해하는 게 더 좋아 보인다. 전달받은 모든 것을 반환하는 함수를 identify function이라고 표현한다
고. identify는 일종의 용어인 셈이다.
실제로 타입스크립트 플레이그라운드에서 identify function을 만들어보았더니 아래와 같이 결과가 나온다.
function identify(arg: number){}
//.d.ts
declare function identify(arg: number): void;
제네릭을 다양한 형태로 선언할 수 있다.
//일반적인 함수와 제네릭 타입
function identity<Type>(arg: Type): Type {
return arg;
}
//화살표함수
let myIdentity: <Type>(arg: Type) => Type = identity;
//object literal type
let myIdentity: { <Type>(arg: Type): Type } = identity;
//interface
interface GenericIdentityFn {
<Type>(arg: Type): Type;
}