object - spread - typescript statements



! operador no método datilografado após o objeto (1)

É chamado de "operador de asserção não nulo" e informa ao compilador que x.getY() não é nulo.

É um novo recurso de datilografia 2.0 e você pode ler sobre isso na nova página, aqui está o que ele diz:

Um novo ! O operador de expressão pós correção pode ser usado para afirmar que seu operando é não nulo e não indefinido em contextos onde o verificador de tipos é incapaz de concluir esse fato. Especificamente, a operação x! produz um valor do tipo de x com nulo e indefinido excluído. Semelhante ao tipo de asserções das formas x e x como T, o! O operador de asserção não nulo é simplesmente removido no 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

Há um problema para documentar esse recurso: Operador de asserção não nulo do documento (!)

Eu tenho um objeto X com um método getY() retornando um objeto Y com um método a() , datilografado. O que significa uma expressão como esta:

X.getY()!.a()

Eu acho que o ! operador é usado para checar contra null, mas como funciona concretamente? Onde é definido no idioma?





operators