Javascript 用于转换可空性的类型批注
我希望有一个可以删除值的可空性的函数(如果值实际为空,则引发异常),但我似乎无法获得正确的类型注释。我的第一次尝试是:Javascript 用于转换可空性的类型批注,javascript,google-closure-compiler,google-closure,Javascript,Google Closure Compiler,Google Closure,我希望有一个可以删除值的可空性的函数(如果值实际为空,则引发异常),但我似乎无法获得正确的类型注释。我的第一次尝试是: /** *@param{?T}obj *@param{string}消息 *@return{!T} *@T模板 */ 函数checkNotNull(对象,消息){ if(obj==null){ 抛出消息; }否则{ 返回obj; } } 不过,这似乎不起作用。如果我像foo(checkNotNull(someVar))(其中foo()需要一个不可为空的参数)那样使用它,我仍然
/**
*@param{?T}obj
*@param{string}消息
*@return{!T}
*@T模板
*/
函数checkNotNull(对象,消息){
if(obj==null){
抛出消息;
}否则{
返回obj;
}
}
不过,这似乎不起作用。如果我像foo(checkNotNull(someVar))
(其中foo()
需要一个不可为空的参数)那样使用它,我仍然会得到TYPE\u MISMATCH
错误(基本上说参数仍然标记为可为空)
有没有办法做到这一点?或者我是否需要在手动空检查后继续键入显式类型提示?这在当前的实现中是不可能的。在计划中有几处变化允许这一点,但没有内在的变化