首页 > 解决方案 > 断言所有剩余参数的类型保护不是未定义的

问题描述

是否可以创建一个用户定义的类型保护,让编译器知道传递给它的所有参数都已定义?

我想做这样的事情:

  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);

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

类型谓词不能引用休息参数

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

谢谢!

标签: typescripttypeguards

解决方案


推荐阅读