: 함수의 타입을 먼저 설정하고 함수 선언하기
type Add = (a: number, b: number) => number;
const add: Add = (a, b) => a + b;
type Add = {
(a: number, b: number) : number
}
const add: Add = (a, b) => a + b;
: 함수가 서로 다른 여러 개의 call signatures를 가지고 있을 때 발생
(ex.1) 파라미터의 개수가 다를 경우 > 결과적으로 옵셔널한 파라미터
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;
};
(ex.2)
type Config = {
path: string;
state: object;
};
type Push = {
(path: string): void;
(config: Config): void;
};
const push: Push = (config) => {
if (typeof config === 'string') console.log(config);
else {
console.log(config.path);
}
};
: type에 placeholder를 사용하는 것과 같은 개념