如何声明一个箭头函数的函数重载
学习ts的函数重载时教学文章中都是使用普通函数的声明方式来实现函数重载
function func(foo: number, bar: true): string;
function func(foo: number, bar?: false): number;
function func(foo: number, bar?: boolean): string | number {
if (bar) {
return String(foo);
} else {
return foo * 599;
}
}
对箭头函数实现相同的功能时做了一些尝试,但会报错
interface Func {
(foo: number, bar: true): string;
(foo: number, bar?: false): number;
(foo: number, bar?: boolean): string | number;
}
const func: Func = (foo, bar) => {
if (bar) {
return String(foo);
} else {
return foo * 599;
}
};
使用其他方式
interface Func {
(foo: number, bar: true): string;
(foo: number, bar?: false): number;
}
const func: Func = (foo: number, bar?: boolean): string | number => {
if (bar) {
return String(foo);
} else {
return foo * 599;
}
};
还是报了相同错误