我正在使用官方 ts 手册学习 ts 函数重载。有一些例子,但只有
function
关键字。所以,我正在尝试使用箭头函数来编写,尤其是使用各种参数编号。这是我的一些尝试。
interface DateGeneratorType {
(timestamp: number): Date;
(y: number, m: number, d: number): Date;
}
const dateFactory: DateGeneratorType = (yOrTs, m?, d?) =>
((m ?? false) && (d ?? false)) ? new Date(yOrTs, m, d) : new Date(yOrTs);
第一次尝试遇到
unknwon
类型错误。所以,我必须将unknown
类型指定为number
类型。
const dateFactory: DateGeneratorType = (yOrTs, m?, d?) =>
{
if ((m ?? false) || (d ?? false)) {
if (typeof m === 'number' && typeof d === 'number')
return new Date(yOrTs, m, d);
throw Error('invalid');
} else {
return new Date(yOrTs);
}
}
它有效但不令人满意。有没有其他方法可以在不使用
any
的情况下做到这一点?