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 (!)