typescript

[타입스크립트] 제네릭 에 대하여

승딱 2021. 6. 3. 11:40
반응형

타입을 마치 함수의 파라미터처럼 사용하는 것을 제네릭 이라고 한다.

 

예시를 살펴보자

function exgeneric<T>(text : T): T{
	return text
}

exgeneric <string> ("wow");  
exgeneric <number> (100); 

둘다가능

꺽쇠 자리의 T 라는 문자가 타입자리에 반복 된것을 볼수 있다. 

이 의미는 T 가 쓰이는 자리(파라미터, 리턴)에 타입을  일괄적으로 정해줄수 있다는 의미이다.

 

이것의 이점은 하나의 함수를 여러 데이터 타입으로 사용할수 있게된다.

 

물론 타입을 any 로 설정하게 되면 이러한 이점을 누릴 수도 있지만 이경우 동적으로 타입이 정해져 타입스크립트의 이점을 누릴수 없게 되니까 참고해서 상황에 맞게 사용하자

 

좀더 응용된 예시 살펴보고 끝내자

function exgeneric <T> (arg : T[]): number {
	return arg.length
}

exgeneric <string> (["wow","wowwow","wowwowowow"]);  
exgeneric <number> ([100,200,300]); 
exgeneric <boolean> ([true,true,true,false]); 
exgeneric <void> ([null,undefined])

 

void란

값을 반환하지 않는 함수의 타입을 지정할때 쓰일수 있는 타입이다 

타입이 없다라는 의미이며 undefined 나 null 을 할당할수 있다.

 

배열 타입지정 

number[] , Array<number>

 

튜플 타입지정

let x: [string, number];

 

x = ["hello", 10]; // OK

x = [10, "hello"]; // Error