타입스크립트에서의 함수
call signatures
란 함수 위에 마우스를 올렸을 때 보게 되는 것을 말해.
이건 인자의 타입과 리턴의 타입을 알려주는거야.
type Add = (a:number, b:number) => number;
//이게 call signatures
const add:Add = (a,b) => a + b
오버로딩(overloading)
외부 라이브러리들은 오버로딩을 엄청 많이 사용해. 그래서 이게 어떻게 생겼는지 알아두면 좋아.
오버로딩은 함수가 여러 개의 call signatures를 가지고 있을 때 발생시켜.
다시 말해 오버로딩은 여러 call signatures가 있는 함수일 뿐이야.
type Add = {
(a:number, b:number) : number
(a:number, b:string) : number
}
//이게 call signatures
const add:Add = (a,b) => {
if(typeof b === "string") return a
return a + b
}
타입에 스트링이 올 수도, 넘버가 올 수도 있을때 오버로딩을 사용하는거야.
파라미터의 타입도 다르고 파라미터의 개수도 다를 수 있어.
그럴 경우에는 개수가 더 많은 파라미터를 optional로 처리해줘야해.
type Add = {
(a:number, b:number) :number
(a:number, b:number, c:number): number,
}
const add:Add = (a, b, c?:number) => {
if(c) return a + b + c
return a + b
}