콜러블(Callable)
interface ReturnString {
(): string
}declare const foo: ReturnString;
const bar = foo(); // bar는 문자열 타입인 것으로 추론됨명확한 예제
interface Complex {
(foo: string, bar?: number, ...others: boolean[]): number;
}interface Overloaded {
(foo: string): string
(foo: number): number
}
// 예제 구현
function stringOrNumber(foo: number): number;
function stringOrNumber(foo: string): string;
function stringOrNumber(foo: any): any {
if (typeof foo === 'number') {
return foo * foo;
} else if (typeof foo === 'string') {
return `hello ${foo}`;
}
}
const overloaded: Overloaded = stringOrNumber;
// 사용 사례
const str = overloaded(''); // `str`의 타입은 `string`으로 추론됨
const num = overloaded(123); // `num`의 타입은 `number`로 추론됨화살표 구문
뉴어블(Newable)
Last updated