带有可变数量参数的打字稿箭头函数重载

问题描述 投票:0回答:0

我正在使用官方 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
的情况下做到这一点?

typescript overloading
© www.soinside.com 2019 - 2024. All rights reserved.