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('');