TypeScript
오버로딩 ( 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 는 number 이거나 undefined 타입으로 처리 됨.