오버로딩 ( Overloading )

배병일 ㅣ 2023. 8. 3. 21:05

오버 로딩 

하나의 함수에 서로 다른 여러개의 signature를 가지는 경우

 

  • 예시  1 ( 파라미터 타입이 다른 경우 )
type Add = {
	(a:number, b:number) : number //a 의 타입 숫자, b 의 타입 숫자
    (a:number, b:string) : number // a 의 타입 숫자, b 의 타입 문자열
}

const add : Add = (a, b) => {
	if (typeof b === "string") {  // b의 타입이 문자열이면 a 만 return
    	return a
    } else {
    	return a + b // else 처리로 나머지 경우인 a, b 의 타입이 숫자이면 a + b return
    }
}

 

이런 코드가 존재하진 않겠지만 쉬운 예로 만든 코드임.

 

함수가 하나인데 들어 올 파라미터들의 타입이 정해진게 아닐때를 예로 들었음.

 

  • 예시 2 ( 파라미터 갯수가 다른 경우 )
type Add = {
	(a:number, b:number) : number //a, b 를 받음
    (a:number, b:number, c:number) : number // a, b, c 를 받음 
}

const add : Add = (a, b, c?:number) => {
	if (c) {  // c가 존재하면 a + b + c return
    	return a + b + c
    } else {
    	return a + b // else 처리로 나머지 경우인 a, b 를 받을 경우 a + b return
    }
}

c 의 타입

 

c 는 number 이거나 undefined 타입으로 처리 됨.

'TypeScript' 카테고리의 다른 글

제네릭 ( Generic ) 의 재사용  (0) 2023.08.04
다향성 ( Polymorphyism ), 제네릭 ( Generic )  (0) 2023.08.04
void 타입  (0) 2023.08.03
함수의 call signature  (0) 2023.08.03
type 정해주는 법  (0) 2023.08.03