用于转换可为空性的类型批注

Type annotation for converting nullability

本文关键字:类型 转换 用于      更新时间:2023-09-26

我想要一个可以删除值的可空性的函数(如果值实际上是空的,则抛出异常),但我似乎无法正确获得类型注释。 我的第一次尝试是:

/**
 * @param {?T} obj
 * @param {string} message
 * @return {!T}
 * @template T
 */
function checkNotNull(obj, message) {
  if (obj === null) {
    throw message;
  } else {
    return obj;
  }
}

不过,这似乎行不通。 如果我像foo(checkNotNull(someVar))一样使用它(foo()需要一个不可为空的参数),我仍然会收到TYPE_MISMATCH错误(基本上是说该参数仍然被标记为可为空)。

有没有办法真正做到这一点? 还是我需要继续键入手动 null 检查,然后输入显式类型提示?

这在当前的实现中是不可能的。 计划中有几个变化允许这样做,但没有内在的。