inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

함수형 프로그래밍과 JavaScript ES6+

range와 느긋한 L.range

이거 reduce 타입스크립트로 어덯게 작성하나요?

329

비오

작성한 질문수 55

0

후.. generic이랑, overload 써서 해보려고 하는데 잘안되네요.
 
아래처럼 arrow function으로 하려니까, reduce 함수에서 타입을 지정해달라고 하는데, 이건 아닌거 같고..
type ReduceCallback<T> = (acc: T, cur: T)=>T
type Reduce<T> = {
(fn: ReduceCallback<T>, acc: T, iter: Iterable<T>) : T,
(fn: ReduceCallback<T>, iter: Iterable<T>) : T
}
const reduce: Reduce<T> = (fn, acc, iter) => {
if(iter === undefined) {
iter = acc[Symbol.iterator]();
acc = iter.next();
}

for(const a of iter) {
acc = fn(acc, a);
}
}

 

아래 처럼 function 스타일로 overload 하려고 하는데, acc[Symbo.iterator](); 여기서 에러가 나고요.

 

function reduce<T>(fn: ReduceCallback<T>, iter: Iterable<T>): T;
function reduce<T>(fn: ReduceCallback<T>, acc: T, iter: Iterable<T>):T{
if(!iter) {
iter = acc[Symbol.iterator]();
acc = iter.next();
}

for(const a of iter) {
acc = fn(acc, a);
}
return acc;
}

추가적으로 fn: ReduceCallback<T>, acc: T | Iterable<T>, iter? : Iterable<T> overload 맨 아래 작성해봐도 안되는데 이거 어떻게 하나요?????????

함수형-프로그래밍 javascript

답변 1

0

MDU 유인동

제 강의 새소식 내용을 참고해주세요 :)

요약: https://github.com/marpple/fxts

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

113

1

함수형 프로그래밍 심화 강의 자료 추천

0

72

2

함수형 자바스크립트 프로그래밍 책

0

54

1

filter가 아무것도 걸러내지 못하는 경우

0

115

1

take 함수의 성능적면에서의 이점

1

463

1

pipe함수

1

531

1

Identity 함수

0

451

1

함수형 프로그래밍이란

0

832

1

reduce 예제 코드 제안!

0

405

1

fxts를 배워보려고 합니다.

1

537

1

flatMap 관련 질문드립니다~

1

444

1

다용성이 높은 L.flatMap

0

358

1

변수에 재 할당 금지~

0

540

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

483

2

소요시간에 관해서 질문드립니다

1

458

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

465

2

reduce에 L.range를 사용할 때

0

527

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

739

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

787

3

go, pipe 함수 관련하여 질문 드립니다.

1

499

1

안녕하세요 강사님!

0

380

2

fxts에 go가 없는 이유?

0

840

1

비동기 관련 질문입니다!

0

462

1

질문 있습니다.

0

517

1