! оператора в typescript после метода объекта

У меня есть объект X с методом getY(), возвращающим объект Y с помощью метода a(), в typescript. Что означает выражение, подобное этому:

X.getY()!.a()

Я полагаю, что оператор ! используется для проверки null, но как он работает конкретно? Где определено на языке?

Ответ 1

Он назвал "ненулевой оператор утверждения" и сообщает компилятору, что x.getY() не является нулевым.

Это новая функция typescript 2.0, и вы можете прочитать об этом в какую новую страницу (поиск "оператора нулевого утверждения" "), вот что он говорит:

Новое! пост-фиксированный оператор выражения может использоваться, чтобы утверждать, что его операнд не равен null и не undefined в контекстах, где тип контролер не может это сделать. В частности, операция Икс! выдает значение типа x с нулевым и undefined исключенным. Подобно утверждениям типа форм x и x как T, the! оператор ненулевого утверждения просто удаляется в испускаемом Код JavaScript.

// Compiled with --strictNullChecks
function validateEntity(e?: Entity) {
    // Throw exception if e is null or invalid entity
}

function processEntity(e?: Entity) {
    validateEntity(e);
    let s = e!.name;  // Assert that e is non-null and access name
}

Изменить

Есть проблема с документированием этой функции: Document non-null assertion operator (!)