! operatore in typescript dopo il metodo dell’object

Ho un object X con un metodo getY() restituisce un object Y con un metodo a() , in typescript. Cosa significa un’espressione come questa:

 X.getY()!.a() 

Immagino il ! l’operatore è usato per verificare contro null, ma come funziona concretamente? Dove è definito nella lingua?

Si chiama “Operatore di asserzione non nulla” e dice al compilatore che x.getY() non è nullo.

È una nuova funzionalità di typescript 2.0 e puoi leggerla nella nuova pagina, ecco cosa dice:

Un nuovo ! l’operatore di espressione post-fix può essere usato per affermare che il suo operando non è nullo e non è indefinito in contesti in cui il correttore di tipi non è in grado di concludere tale fatto. Nello specifico, l’operazione x! produce un valore del tipo di x con escluso nullo e indefinito. Simile al tipo asserzioni delle forms xe x come T, the! l’operatore di asserzione non nulla viene semplicemente rimosso nel codice JavaScript emesso.

 // 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 } 

modificare

C’è un problema con la documentazione di questa funzione: Operatore di asserzione non null del documento (!)