用于转换可空性的类型注解
Type annotation for converting nullability
我想要一个可以删除值的可空性的函数(如果该值实际上为空则抛出异常),但我似乎无法获得正确的类型注释。我的第一次尝试是:
/**
* @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
错误(基本上是说该参数仍然被标记为可为 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()
需要一个不可为 null 的参数),我仍然会收到 TYPE_MISMATCH
错误(基本上是说该参数仍然被标记为可为 null)。
有没有办法真正做到这一点?或者我是否需要继续输入手动空值检查,然后再输入显式类型提示?
这在当前的实现中是不可能的。计划中有几处更改允许这样做,但没有任何内在的变化。