0
기능적으로 n 번 인수를 인수로 반복하는 typescript 함수를 코딩하려고합니다. 재귀는 나에게 좋은 제안으로 보인다.typescript에 일반 화살표 기능을 추가 하시겠습니까?
바닐라 ES에서 시도한 내용은 다음과 같습니다.
const repeat = f => times => arg => {
if(times <= 0) {
return arg;
} else {
const val = repeat(f)(times-1)(f(arg))
return val;
}
}
형식을 고집하는 최선의 시도는 컴파일을 통과하지 못합니다.
const repeat = <T>(f: T=>T) => (times: number) => (arg: T) => {
if(times <= 0) {
return arg;
} else {
const val: T = repeat(f)(times-1)(f(arg))
return val;
}
}
편집 @arpl의 조언을 따라하지만, 별도의 인터페이스를 작성하지, 나는 아래에 대한 정착했다. "ret"에 대한 별도의 정의는 반환 유형을 적절히 추론 할 수있게하는 것입니다.
const repeat = <T>(f: (a: T)=>T) => (t: number) => (a: T) => {
const ret: T = t > 0 ? repeat(f)(t - 1)(f(a)) : a;
return ret;
};