Typescript는 함수 타입을 지정할 수 있다.
예를 들어 두 수를 더하고 반환하는 함수가 있다고 하자
function add( n1 : number, n2 : number ) {
return n1 + n2;
}
만약 함수를 할당하고 변수를 할당한 후, 컴파일하면 어떤 일이 발생할까?
function add( n1 : number, n2 : number ) {
return n1 + n2;
}
let printAdd;
printAdd = add;
printAdd = 1;
컴파일 에러가 생기지 않는다.
그 이유는 let printAdd
는 any
타입으로 선언되어 아무 것이나 할당 받을 수 있기 때문이다.
그래서 나온 타입 키워드가 바로 Function
이다.
function add( n1 : number, n2 : number ){
return n1 + n2;
}
let printAdd : Function;
printAdd = add;
printAdd = 1;
이런 식으로 함수만 할당 받을 수 있다고 에러 처리를 해준다.
printAdd
에 두개의 숫자를 더하고 반환하는 함수만 할당하고 싶은데 지금 다른 함수를 할당하면 어떤 일이 벌어질까?
function numberAdd( n1 : number, n2 : number ) {
return n1 + n2;
}
function stringAdd( n1 : string, n2 : string ) {
return n1 + n2;
}
let printAdd : Function;
printAdd = numberAdd;
printAdd = stringAdd;
printAdd
는 Function
타입을 받기 때문에 두개 함수 다 할당이 가능하다.
특정 함수 numberAdd
만 할당 받게 하고 싶으면 다음과 같이 표현해야 한다.
function numberAdd( n1 : number, n2 : number ) {
return n1 + n2;
}
function stringAdd( n1 : string, n2 : string ) {
return n1 + n2;
}
let printAdd : ( n1 : number, n2 : number ) => number;
printAdd = numberAdd;
printAdd = stringAdd;
이렇게 화살표 함수로 인자를 선언하고 return 타입을 선언해주면 특정 함수만 할당 받을 수 있다.