currying의 기본 작동 방식을 생각해봅시다.
let currying=function(greeting:string){ // 1
return function(name:string){ // 2
console.log(greeting+', '+name); // 3
}
}
currying('hello!')('yoon'); // 4
외부함수를 실행한다.
내부 함수를 실행하면서 외부함수의 인자인 greeting은 closure에 저장되어 보존된다. (hello!)
내부함수의 return을 통해 greeting과 name의 인자를 반환하고 종료된다.
let currying=function(greeting:string){
return function(name:string){
return function(region:string){
return function(gender:string){
console.log(greeting+', '+name+' in '+region+' gender: ', gender);
}
}
}
}
이런식으로 늘려서 사용하는 것도 가능하다