오버 로딩
하나의 함수에 서로 다른 여러개의 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 타입으로 처리 됨.
'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 |