TypeScript · Intermediário · Inglês · Técnico
definite assignment assertion
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
!: