- 오버로딩은 함수가 서로 다른 여러개의 call singature를 가지고 있을 때 발생시킨다.
- 동일한 이름에 매개 변수와 매개 변수 타입 또는 리턴 타입이 다른 여러 버전의 함수를 만드는 것이다.
type AddType = {
(a : number, b : number, c : number) : number;
(a : number, b : number) : number;
}
const add : AddType = (a, b, c ?: number) => {
if(c) {
return a + b + c;
}
else {
return a + b;
}
}
console.log(add(10,20)); // 30
console.log(add(10,20,30)); // 60
call signature의 파라미터의 개수는 모두 다를 수 있다.
위 예제에서 call signature1은 파라미터가 2개, call signature2는 파라미터가 3개를 가지고 있다.
공통되지 않은 파라미터도 있다면 해당 파라미터에게 추가적으로 타입을 지정 및 선택사항이라는 것을 알려주어야 한다.
참고
노마드코더
overloading