Typescript Non Null Assertion Operator
Syntax
if(student!.name === "eric"){
// ...
}It is a way to tell the compiler “this expression cannot be null or undefined here, so don’t complain about the possibility of it being null or undefined.” Sometimes the type checker is unable to make that determination itself.
It is explained in the TypeScript release notes:
A new
!post-fix expression operator may be used to assert that its operand is non-null and non-undefined in contexts where the type checker is unable to conclude that fact. Specifically, the operationx!produces a value of the type ofxwithnullandundefinedexcluded. Similar to type assertions of the forms<T>xandx as T, the!non-null assertion operator is simply removed in the emitted JavaScript code.
The term “assert” a bit misleading in that explanation. It is “assert” in the sense that the developer is asserting it, not in the sense that a test is going to be performed. The last line indeed indicates that it results in no JavaScript code being emitted.