Ответ 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 (!)