Я хотел бы иметь функцию, которая может удалить нулеуемость значения (бросая исключение, если значение на самом деле является нулевым), но я не могу получить правильные аннотации типа. Моя первая попытка:Аннотации типа для преобразования 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()
ожидает параметр, не допускающий nullable), я по-прежнему получаю ошибку TYPE_MISMATCH
(в основном говоря, что параметр по-прежнему отмечен как nullable).
Есть ли способ на самом деле сделать это? Или мне нужно набирать ручные нулевые проверки, за которыми следуют явные подсказки типа?