ExpertiDict

TypeScript · Intermediário · Inglês · Técnico

definite assignment assertion

/ˈdɛfɪnɪt əˈsaɪnmənt əˈsɝʃən/substantivo

Sufixo !: em uma propriedade de classe que garante ao compilador que ela será inicializada antes do uso, mesmo sem atribuição no construtor.

Onde usar

Aparece com injeção de dependência, ORMs e frameworks que preenchem campos fora do construtor. Sob strictPropertyInitialization o compilador exige inicializar, e o !: é a válvula de escape.

Em código

class Servico {
  repo!: Repositorio;
  iniciar(r: Repositorio) {
    this.repo = r;
  }
}
interface Repositorio { ler(): string }

Exemplos

Use a definite assignment assertion, the container sets the field.

Use um definite assignment assertion, o container preenche o campo.

A definite assignment assertion silences the error but guarantees nothing.

Um definite assignment assertion cala o erro mas não garante nada.

Cuidado

É uma promessa sem verificação: se ninguém inicializar o campo, ele será undefined em runtime, e o tipo continuará dizendo o contrário.

Sinônimos

!:

Veja também

Todos os termos de TypeScript