[TS] 함수 오버로딩

TIL

함수 오버로딩이란 하나의 함수를 매개변수의 개수나 타입에 따라 다르게 동작하도록 만드는 문법으로, 타입스트립트에서는 지원하지만 자바스크립트에서는 지원하지 않는다.

 

오버로드 시그니처

타입스크립트에서 함수 오버로딩을 구현하려면 다음과 같이 버전별 오버로드 시그니처를 만들어야 한다.

function func(a: number): void;
function func(a: number, b: number, c: number): void;

이렇게 구현부 없이 선언부만 만들어둔 함수를 오버로드 시그니처라고 한다.

 

구현 시그니처

그 다음 실제로 함수가 어떻게 실행될 것인지를 정의하는 부분인 구현 시그니처를 만들어야 한다.

구현 시그니처의 매개변수는 모든 오버로드 시그니처와 호환되어야 한다.

 

따라서 b와 c는 선택적 매개변수로 정의해준다.

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, 2)는 어떤 오버로드 시그니처와도 일치하지 않으므로 오류가 발생한다.

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);          // ✅ 20
func(1, 2);       // ❌
func(1, 2, 3);    // ✅ 6

'TIL' 카테고리의 다른 글

[TS] 인터페이스  (0) 2025.11.01
[TS] 사용자 정의 타입 가드  (0) 2025.11.01
[TS] 함수 타입 정의 및 호출 시그니처 연습  (0) 2025.11.01
[TS] 함수 타입의 호환성  (0) 2025.11.01
[TS] 함수 타입 표현식과 호출 시그니처  (0) 2025.11.01
'TIL' 카테고리의 다른 글
  • [TS] 인터페이스
  • [TS] 사용자 정의 타입 가드
  • [TS] 함수 타입 정의 및 호출 시그니처 연습
  • [TS] 함수 타입의 호환성
고견
고견
개발 자국 남기기
  • 고견
    개발자국
    고견
  • 전체
    오늘
    어제
    • 분류 전체보기 (157)
      • Frontend (29)
        • Next.js (16)
        • JavaScript (7)
      • CS (19)
        • 자료구조 (9)
        • 알고리즘 (5)
        • 운영체제 (4)
        • 네트워크 (1)
      • TIL (93)
      • Dev Log (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    cs50
    useState
    Trouble Shooting
    App Router
    문자열
    제네릭
    함수 타입
    알고리즘
    Next.js
    배열
    ai 감성 일기장
    Spa
    C
    algorithm
    memory
    emotion diary
    javascript
    바닐라 자바스크립트
    react
    인터페이스
    CS
    트러블 슈팅
    타입 좁히기
    Pages Router
    generic
    페이지 라우터
    앱 라우터
    typescript
    자료구조
    클래스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
고견
[TS] 함수 오버로딩
상단으로

티스토리툴바