다음과 같은 제니릭 함수가 있습니다.
function identity<T>(arg: T): T {
return arg;
}
상기 함수에 대한 타입은 어떻게 정의할 수 있을까.. 3가지 정도가 가능합니다. 먼저…
let myIdentity1: <T>(arg: T) => T = identity;
다음은 객체 리터럴 타입의 함수 호출 시그니처 방식입니다.
let myIdentity2: { <T>(arg: T): T } = identity;
다음은 인터페이스 방식입니다.
interface GenericIdentityFn1 {
<T>(arg: T): T;
}
let myIdentity3: GenericIdentityFn1 = identity;
interface GenericIdentityFn2<T> {
(arg: T): T;
}
let myIdentity4: GenericIdentityFn2<string> = identity;
