1
2
3
4
5
6
7
function greeter(fn: (a: string) => void) {
fn("Hello, World");
}
function printToConsole(s: string) {
console.log(s);
}
greeter(printToConsole);
위 예제처럼 매개변수로 함수가 넘어오는 경우, 함수 갖고있는 매개변수와 해당 함수가 return
하는 값의 Type
을 설정하여, 해당 기능을 하는 함수들만 매개변수로 받을 수 있다.
함수 greeter
는 매개변수로 string
Type
의 변수를 한 개 받는 Return Type
이 void
인 함수 printToConsole
을 정상적으로 받는 모습을 볼 수 있다.
그런데 아무리 봐도 매개변수 자리에 fn: (a: string) => void
가 오는건 솔직히 부담스럽다. 너무 길고 복잡하다.
1
2
3
4
type GreetFunction = (a: string) => void;
function greeter(fn: GreetFunction) {
// ...
}
그렇다면 이건 어떤가? type
선언은 number
나 boolean
과 같은 Type
을 직접 커스터마이징 할 수 있는 선언문이다.
일반 변수나 상수를 정의할 때와 동일한 방법을 사용하는데, 연산자 뒤에 들어오는 값은 위 코드와 같은 함수의 선언부나 객체가 들어갈 수 있다.