typescript 类型脚本箭头函数重载,它接受可变数量的参数

62lalag4  于 2023-04-22  发布在  TypeScript
关注(0)|答案(1)|浏览(162)

我正在学习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的情况下实现这一点?

jc3wubiy

jc3wubiy1#

您需要在impl参数中定义类型,并删除令人困惑的&& false

const dateFactory: DateGeneratorType = (yOrTs: number, m?: number, d?: number) =>
   m && d ? new Date(yOrTs, m, d) : new Date(yOrTs);

相关问题