operator different object typescript operators

object - different - typescript operator !=



! operador en mecanografiado después del método de objeto (1)

Tengo un objeto X con un método getY() devuelve un objeto Y con un método a() , en mecanografiado. ¿Qué significa una expresión como esta?

X.getY()!.a()

Supongo que el ! El operador se utiliza para verificar contra nulo, pero ¿cómo funciona concretamente? ¿Dónde se define en el idioma?


Se llama "Operador de aserción no nulo" y le dice al compilador que x.getY() no es nulo.

Es una nueva característica de typecript 2.0 y puede leer sobre ella en la página de novedades , esto es lo que dice:

Un nuevo! El operador de expresión posterior al arreglo puede usarse para afirmar que su operando no es nulo y no está definido en contextos donde el verificador de tipo no puede concluir ese hecho. Específicamente, la operación x! produce un valor del tipo de x con nulo e indefinido excluido. Similar a las aserciones de tipo de las formas xyx como T, el! El operador de aserción no nulo simplemente se elimina en el código JavaScript emitido.

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

Editar

Hay un problema para documentar esta función: Operador de aserción de documento no nulo (!)