본문 바로가기
프로그래밍/타입스크립트

타입스크립트 - 함수 오버로딩

by Programmer.Junny 2025. 2. 14.
void Func(int a)
{
}

void Func(int a, int b, int c)
{
}

C#에서 오버로딩은 아래와 같이 쉽게 구현할 수 있다.

타입스크립트는 기본적으로 자바스크립트의 확장판이기 때문에 위와 같은 쉬운 문법적용이 되지 않는다. (빙빙 돌아서가는 느낌...)

오버로드 시그니처

// 오버로드 시그니처
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);

 

 

왜 오버로드를 해야하는걸까?

오버로드 시그니처 없이, 구현 시그니처만으로도 문제가 없으리라고 생각할 수 있다.

func(1, 2);

그러나 위와 같은 출력에서 오버로드 시그니처가 없으면 에러를 나타내지 않는다.

그러므로 오버로드 시그니처가 반드시 필요하다.

최근댓글

최근글

skin by © 2024 ttuttak