输入注释以转换为空性

时间:2015-01-22 18:31:03

标签: javascript google-closure-compiler google-closure

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

/**
 * @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错误(基本上说该参数仍被标记为可为空)。

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

1 个答案:

答案 0 :(得分:0)

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