타입스크립트[제네릭으로 뛰어들다]

이유정·2023년 2월 8일
0

Generics

function insertAtBeginning(array: any[], value: any){
	const newArray = [value, ...array];
  return newArray 
}

const demoArray = [1,2,3];

const updatedArray = insertAtBeginning(demoArray, -1); //[-1,1,2,3]

//이 위 경우에 밑 코드가 오류인걸 알아내지 못한다. 
updatedArray[0].split('');

array가 number 배열인지 , string 배열인지 모를 때 any[]를 쓰긴 해야하는데 그렇게 되면 타입스크립트의 기능을 하지 못한다. array를 any[]으로 설정했기 때문에 updatedArray가 어떤 타입의[]인지를 인식하지 못한다.

=>

Generics가 필요해짐

제네릭 타입을 통해 any 타입이 아니라는 것을 알려준다.
demoArray가 number[] 타입이라는 것을, -1이 number라는 것을 updatedArray가 number[] 타입이라는 것을 이제 안다.
또, 배열을 구성하는 값들의 타입은 value 값의 타입과 같다는 것을 안다.

function insertAtBeginning<T>(array: T[], value: T){
	const newArray = [value, ...array];
  return newArray 
}

const demoArray = [1,2,3];

const updatedArray = insertAtBeginning(demoArray, -1); //[-1,1,2,3]

//이 위 경우에 밑 코드가 오류인걸 알아낸다. 
updatedArray[0].split('');
  • 함수에 타입 안정성과 유연성을 준다.
  • 어떤 타입이든 사용할 수 있지만, 특정 타입을 사용해 함수를 실행하고 나면 해당 타입으로 고정되어 동작한다.
profile
팀에 기여하고, 개발자 생태계에 기여하는 엔지니어로

0개의 댓글