초깃값이 있는 경우 초깃값의 타입이 최종 반환값 타입이 되므로 타입 매개변수 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의 첫 번째 오버로딩처럼 하나로 합칠 수 있습니다. 따라서 거의 동일하게 타이핑했다고 볼 수 있습니다.

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