代码之家  ›  专栏  ›  技术社区  ›  James D.

用于转换空性的类型注释

  •  0
  • James D.  · 技术社区  · 11 年前

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

    /**
     * @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() 需要一个不可为null的参数),我仍然得到 TYPE_MISMATCH 错误(基本上说该参数仍然标记为可为空)。

    有没有办法真正做到这一点?或者我需要继续在手动空检查中键入,然后是显式类型提示吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   John    11 年前

    这在当前的实现中是不可能的。在计划中有几个改变,但没有内在的改变。