[한입] 함수 오버로딩

TK·2023년 12월 13일
0

[강의] 한입 시리즈

목록 보기
28/59

함수 오버로딩

함수를 매개변수의 개수나 타입에 따라 여러가지 버전으로 정의하는 방법

  • c언어 예시

    void → 반환값 타입
    int == number(js)
  • js지원 안되고 ts에서 지원됨

✏️예제

  • 하나의 함수 func
  • 모든 매개변수의 타입 number
  • 버전1. 매개변수가 1개 → 이 매개변수에 20을 곱한 값 출력
  • 버전2. 매개변수가 3개 → 이 매개변수들을 다 더한 값을 출력

※ 참고: 오버로드 시그니쳐 ※

함수의 구현부 없이 선언식만 써놓은 것 →
매개변수별로 다른 버전을 명시하기 위해 사용

// 버전들 -> 오버로드 시그니쳐
function func(a: number): void;
function func(a: number, b: number, c: number): void;

// 실제 구현부 -> 구현 시그니쳐
function func() {}

func();        // ❌ 오류
func(1);
func(1, 2);    // ❌ 오류
func(1, 2, 3);

  • 최종 코드
function func(a: number): void;
function func(a: number, b: number, c: number): void;

function func(a: number, b?: number, c?: number) {
  if (typeof b === "number" && typeof c === "number") {
    console.log(a + b + c);
  } else {
    console.log(a * 20);
  }
}

func(1);
func(1, 2, 3);
profile
쉬운게 좋은 FE개발자😺

0개의 댓글