我想有一个可以删除值的可空性的函数(如果值实际为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
错误(基本上说该参数仍被标记为可为空)。
有没有办法真正做到这一点?或者我是否需要继续输入手动空检查,然后输入显式类型提示?
答案 0 :(得分:0)
在当前的实现中,这是不可能的。计划中有一些变化允许这样做,但没有任何内在。