JavaScript · Avançado · Inglês · Técnico
Symbol.toPrimitive
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); // 40Exemplos
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.