해결된 질문
작성
·
459
0
안녕하세요 강의 잘 듣고 있습니다.
function map<T,K>(arr:T[],callback:(item:any)=>K){
let result = [];
for (let i = 0; i < arr.length; i++) {
result.push(callback(arr[i]))
}
return result
}
이렇게 map함수를 정의하였는데요
map(['hi','hello'],(it)=>parseInt(it))
이게 가능하면 안되니까
function map<T>(arr:T[],callback:(item:any)=>T){
let result = [];
for (let i = 0; i < arr.length; i++) {
result.push(callback(arr[i]))
}
return result
}
이게 map함수 올바른 작성 양식 아닌가요??
답변 2
1
0
안녕하세요 이지수님 이정환입니다.
자바스크립트의 Map 메서드는 기존 배열 요소 타입과 다른 타입의 요소들로 이루어진 배열로 변환하는 기능도 제공합니다. 따라서 다음과 같은 동작이 가능해야 합니다.
const arr = [1, 2, 3];
arr.map((it) => it.toString());
// ["1", "2", "3"]
위 코드는 number 타입의 요소들이 담긴 배열을 string 타입의 요소들이 담긴 배열로 변환하는 예 입니다.
따라서 Map 메서드를 우리가 직접 구현할 때에도 위와 동일하게 동작할 수 있어야 하기 때문에
타입 변수를 2개(T, U) 사용해 반환 배열 요소의 타입이 원래 배열 요소의 타입과 달라질 수 있도록 설정해주어야 합니다.