user2032922 user2032922 - 2 months ago 5x
TypeScript Question

! operator in typescript after object method

I have an object

with a method
returning an object
with a method
, in typescript.
What does it mean an expression like this one:


I guess the
operator is used to check against null, but how does it work concretely? Where is defined in the language?



It's called the "Non-null assertion operator" and it tells the compiler that x.getY() is not null.

It's a new typescript 2.0 feature and you can read about it in the what's new page (search for "Non-null assertion operator"), here's what it says:

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 operation x! produces a value of the type of x with null and undefined excluded. Similar to type assertions of the forms x and x as T, the ! non-null assertion operator is simply removed in the emitted JavaScript code.

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

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