패스트캠퍼스 데브캠프

김민태의 데브캠프 2기 - 함수 오버로딩

vitamin3000 2024. 11. 11. 11:50

 

함수 오버로딩을 할 때는 함수명, 매개변수 개수가 동일해야하고, 자료형 중에 any를 사용하여 선언한다.

아래 에시를 보자

 

function add(a: string, b: string): string;
function add(a: number, b: number): number;
function add(a: any, b: any): any{
    return a + b;
}

add("hello", "world");
add(1,2);

 

 

 

다음 방법으로는 직접 union 타입으로 매개변수에 지정하는 방식이다.

// 매개변수에 직접 union타입으로 지정
function saySometing(word: string | string[]): string{
    if(typeof(word === "string"))
    {
        return word;
    } else if (Array.isArray(word)){
        return word.join(" ");
    }
    throw new Error("unable to say something");
}

saySometing(["hello", "world"]) // 'hello world'

 

여기서 join() 메소드를 사용했는데, 이것은 배열의 각 원소를 매개변수 값으로 연결해준다.

 

함수 오버로딩 방법으로 작성해보면.. 

 

function saySometing(word: string) : string
function saySometing(words : string[]) : string
function saySometing(word: any): any{
    // 로직은 동일
}
saySometing(["hello", "world"]) // 'hello world'