다형성이란, 프로그램 언어의 요소들이 다양한 자료형을 띌 수 있는 성질이다. 타입스크립트에서는 호출 시그니처(Call Signature)에 고정 타입(Concrete Type) 이외의 제네릭 타입(Generic Type)을 지정함으로써, 여러가지 타입을 적용하여 코드의 재사용성을 높이는 방식으로 활용한다.
//기본 자료형
type CallSignature = {
<GENERIC_NAME>(a:GENERIC_NAME) :type
}
//array
type CallSignature = {
<GENERIC_NAME>(a:GENERIC_NAME[]) :type
}
위 코드에서 제네릭으로 대체한 a의 타입은 유동적으로 바뀌어 적용된다.
유형이 변할 수 있는 클래스, 함수 및 호출 시그니처를 생성하기 위해 사용하는 타입. 같은 코드임에도 다른 호출 시그니처를 생성-적용시킨다.
제네릭 타입은 한 시그니처에서 동시에 여러 가지를 생성하여 적용할 수도 있다.
type CallSignature = {
<GENERIC_NAME1, GENERIC_NAME2>(a:GENERIC_NAME1, b:GENERIC_NAME2) :type
}
제네릭 타입을 이용해 특정 호출 시그니처를 생성(커스텀)하여 적용(재사용)할 수도 있다.
type Object<G> = {
a: G
}
type Object_secondary = Object<{ a: string }>
제네릭 타입은 일반적인 호출 시그니처를 작성할 때도 활용 가능하다.
type A = Array<number>
function func(arr: Array<string>){}
오.. 좋은듯?