我正在学习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
的情况下实现这一点?
1条答案
按热度按时间jc3wubiy1#
您需要在impl参数中定义类型,并删除令人困惑的
&& false