symbol / bigint symbol e bigint
Última atualização: 2026-10-22
symbol / bigint symbol e bigint
symbol cria valores globalmente únicos, sem repetição — bom para chaves de objetos e tokens constantes. bigint armazena inteiros de precisão arbitrária além da faixa segura de number.
| Grupo | Tipos Básicos |
|---|---|
| Tipo | Tipo |
| Modo strict | Não necessário |
ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.
📝 Sintaxe
const key = Symbol("id"); // valor único; "id" é só uma descrição
const big: bigint = 9007199254740993n; // valor exato além do intervalo seguro
⚙️ Parâmetros
| Symbol(desc) | O argumento é uma descrição (legível via .description) e não afeta a unicidade |
|---|---|
| 123n | Literais bigint terminam com n; BigInt(123) também converte |
Retorno:Nenhum valor de retorno — symbol/bigint são anotações de tipo básicas; Symbol() e BigInt() são funções de runtime.
▶ Exemplo
Edite o código abaixo e clique em Testar para ver o resultado transpilado:
Saída:
false order
9007199254740994
(Saída de execução após a transpilação; dois Symbols com a mesma descrição não são iguais — é isso que único significa)
💡 Observações
ℹ️ Info Symbol("a") !== Symbol("a") — descrições são apenas rótulos; use Symbol.for("a") para um symbol compartilhado e registrado.
⚠️ Atenção bigint não pode ser misturado diretamente com number (9007199254740993n + 1 dá erro) e o JSON.stringify não consegue serializá-lo.
💡 Dica Chaves symbol são ignoradas por Object.keys e for...in — perfeitas para metadados internos.
🏷️ Tipos Básicos Relacionados
💡 Casos relacionados
Mais casos em breve.
📚 Tutoriais relacionados
❓ Perguntas frequentes
P Quando preciso de bigint?
R Quando inteiros excedem 2^53 - 1 ou devem permanecer exatos: IDs snowflake, cálculos criptográficos, totais grandes em centavos. Dentro da faixa, number simples basta.
P Para que symbol é realmente usado?
R Três usos típicos: chaves internas de objetos sem colisão, constantes únicas em nível de módulo e protocolos da linguagem via well-known symbols como Symbol.iterator.
P Duas chamadas Symbol("a") são iguais?
R Não — cada chamada Symbol() cria um valor novo. Para compartilhar entre módulos, use Symbol.for("a"), que retorna a mesma instância para a mesma chave.