断言所有其余参数的类型防护并非未定义

时间:2019-10-31 03:07:25

标签: typescript typeguards

是否有可能使用户定义的类型保护程序使编译器知道传递给它的所有参数都已定义?

我想做这样的事情:

  public static all(...values: unknown[]): values is object[] {
    return values.every(value => typeof(value) !== 'undefined');
  }

我想使用它,以便我可以传递一组可能未定义的参数,处理未定义的情况,否则将其传递给需要值的方法。

可能看起来像这样:

    if (!ParamHelper.all(id, ...dateParts)) { return []; }
    const date = new Date(dateParts.join('-'));
    const result = await this.service.getData(assetId, date);

当我尝试上面的朴素版本时,编译器告诉我:

  

类型谓词不能引用rest参数

所以,我目前假设它无法完成。但是,我想在放弃之前会问。

谢谢!

0 个答案:

没有答案