ExpertiDict

TypeScript · Avançado · Inglês · Técnico

define semantics

/dɪˈfaɪn sɪˈmæntɪks/substantivo

Comportamento ligado à opção useDefineForClassFields, em que campos de classe são emitidos com [[Define]] do ECMAScript, e não como atribuições no construtor. É o padrão com target ES2022 ou superior.

Onde usar

Causa bugs sutis ao migrar: um campo redeclarado na subclasse sem inicializador passa a valer undefined e sobrescreve o valor que a base atribuiu.

Em código

class Base {
  x: number = 1;
}
class Filho extends Base {
  declare x: number; // só tipo, sem emitir
  // x!: number; // define: x = undefined
}
const v = new Filho().x; // 1

Exemplos

The subclass field reset to undefined because of define semantics.

O campo da subclasse virou undefined por causa do define semantics.

Use declare on the field to keep the base value.

Use declare no campo para manter o valor da base.

Cuidado

Declarar um campo só para tipar deixa de ser inofensivo; use declare nome: tipo quando o valor vem da classe base.

Sinônimos

useDefineForClassFields

Veja também

Todos os termos de TypeScript