더북(TheBook)

초깃값이 있는 경우 초깃값의 타입이 최종 반환값 타입이 되므로 타입 매개변수 S를 선언했습니다. 매개변수 a와 콜백 함수의 반환값, 초깃값 iV, reduce의 반환값을 전부 S 타입으로 바꾸면 됩니다.

다음 타입스크립트 코드를 보세요.

lib.es5.d.ts

interface Array<T> {
  (...)
  reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
  reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;
  reduce<U>(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;
  (...)
}

오버로딩이 세 개로 되어 있습니다. 첫 번째와 두 번째 오버로딩은 myReduce의 첫 번째 오버로딩처럼 하나로 합칠 수 있습니다. 따라서 거의 동일하게 타이핑했다고 볼 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.