일등함수 살펴보기

omnigi·2022년 2월 11일
0

Typescript Do it

목록 보기
9/23

콜백함수

일등함수 기능을 제공하는 언어에서는 함수는 "함수표현식"이라는 일종의 값입니다. 따라서 함수를 변수에도 담을 수 있습니다. 이 말은 함수표현식을 매개변수로 받을 수 있다는 것을 의미합니다. 이처럼 매개변수형태로 동작하는 함수를 콜백함수 라고 합니다

export const init = (callback: () => void):void =>{
	console.log("defaykt initalization finished.");
    callback();
    console.log("all initialization finished.")
}

위 코드는 중간에 매개변수로 받은 callback에 담긴 함수 표현식을 실행합니다.

다음 코드는 앞서 구현한 init함수에 자신이 실행하려는 내용을 익명 함수로 전달합니다.

								callback.ts
import {init} from "./init"
init(() => console.log("custom initialization finished."))

중첩함수

함수형 언어에서 함수는 변수에 담긴 함수 표현식이므로 함수안에 또 다른 함수를 중첩해서 구현할 수 있습니다.

const calc = (value: number, cd: (number)=>void: void) => {
	let add =(a, b) => a + b
    function multiply(a, b){return a * b}
    
    let result = multiply(add(1, 2), value)
    cd(result)
}
calc(30, (result: number) => console.log(`result is ${result}`))
// result is 90

고차 함수와 클로저, 그리고 부분 함수

고차함수(high-order function)은 또 다른 함수를 반환하는 함수를 말합니다. 함수형 언어에서 함수는 단순히 함수 표현식이라는 값이므로 다른 함수를 반환 할 수 있습니다.(고차함수 기능이 없다면 함수형 프로그래밍이 불가능할 정도로 매우 중요한 기능입니다)

const add1 = (a: number, b:number): number => a + b
const add2 = (a: number):(arg: number) => number =>(b:number) :number => a + b 
//둘은 같은 내용이고 add2는 고차함수.
const result = add2(1)(3)
console.log(result) //4

3차 고차함수인 multiply에 함수 호출 연산자를 하나나 두개만 사용하면 아직 값이아닌 함수입니다. 이것을 부분 애플리케이션 혹은 부분 적용 함수라고 합니다.

const multiply = a => b => c => a * b * c

0개의 댓글

관련 채용 정보