2015-01-22 5 views
0

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

Есть ли способ на самом деле сделать это? Или мне нужно набирать ручные нулевые проверки, за которыми следуют явные подсказки типа?

ответ

0

Это невозможно в текущих реализациях. Есть несколько изменений, запланированных для этого, но ничего имманентного.

Смежные вопросы