ExpertiDict

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

Symbol.toPrimitive

/ˈsɪmbəl tu ˈpɹɪmɪtɪv/substantivo

Símbolo conhecido cujo método controla como um objeto é convertido em primitivo, recebendo a dica 'number', 'string' ou 'default'. Tem prioridade sobre valueOf e toString.

Onde usar

Usado em classes de valor, como dinheiro ou datas, para definir como entram em contas e templates. Em code review, é um ponto avançado de coerção que poucos conhecem.

Em código

const preco = {
  [Symbol.toPrimitive](h) {
    return h === 'string' ? 'R$ 20' : 20;
  },
};
console.log(`${preco}`); // R$ 20
console.log(preco * 2);  // 40

Exemplos

Symbol.toPrimitive lets the money class control its conversion.

Symbol.toPrimitive deixa a classe de dinheiro controlar sua conversão.

The hint tells you whether it was string or number.

A dica diz se a conversão foi para string ou para número.

Cuidado

Implementar só toString e esperar que operadores matemáticos usem o texto; sem toPrimitive ou valueOf, a conversão numérica dá NaN.

Veja também

Todos os termos de JavaScript