인자 리스트가 다르고 함수명이 동일한 것을 '오버로딩 함수'라고 부른다.
typescript는 함수 오버로드 기능을 제공한다. (타입을 지정할 수 있기 때문)
매개변수의 데이터 타입
매개변수의 데이터 개수
매개변수의 데이터 순서
- 함수선언
- 함수 정의
- 함수 호출
// 1. 함수 선언
function disp(n: number): void;
function disp(n: number, s: string): void;
function disp(n: number, s: string, n2: number): void;
// 2. 함수 정의
function disp(n: number, s?: string, n2?: number): void {
// ? 를 사용하여 s와 n2를 선택적으로 파라미터를 받는다.
console.log(n, s, n2);
}
// 3. 함수 호출
disp(100); // 100 undefined undefined
disp(200, '홍길동'); // 200 홍길동 undefined
disp(300, '홍길동', 25); // 300 홍길동 25
function x(n: number): void;
function x(n: string): void;
function x(n: any): void {
console.log(n);
}
x(10);
x('가나다');
function disp2(n: number): void;
function disp2(s: string): void;
function disp2(s: string, n: number): void;
function disp2(n: number, s: string): void;
function disp2(n: any, s?: any): void {
console.log(n, s);
}
disp2(100);
disp2('홍길동');
disp2(20, 'a');
disp2('a', 20);