더북(TheBook)

3.6 map 만들기

이번에는 map 메서드를 직접 타이핑해보겠습니다. 이전 절에서 forEach 타이핑을 해봤으므로, map을 만들 때 완전 백지부터 출발하지는 않겠습니다.

미리 테스트 사례도 많이 준비했고, myMap 메서드의 콜백 함수도 에러가 발생하지 않을 정도로만 타이핑해두었습니다. lib.es5.d.ts와의 충돌을 방지하기 위해 myMap으로 이름을 바꿨습니다. 타입스크립트에서는 실행 환경에 따라 변하는 this를 정확하게 타이핑하기 어려우므로 this와 관련한 사례는 만들지 않았습니다.

const r1 = [1, 2, 3].myMap(() => {});
const r2 = [1, 2, 3].myMap((v, i, a) => v);
const r3 = ['1', '2', '3'].myMap((v) => parseInt(v));
const r4 = [{ num: 1 }, { num: 2 }, { num: 3 }].myMap(function(v) {
  return v.num;
});

interface Array<T> {
  myMap(callback: (v: T, i: number, a: T[]) => void): void;
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.