Símbolos - JavaScript

Símbolos, representados pelo tipo Symbol no JavaScript, são valores únicos que não se repetem. Para definir um símbolo, usamos o construtor Symbol. Por exemplo, vejamos como criar um símbolo simples:

const tom = Symbol("Tom");
console.log(tom);   // Symbol(Tom)

Cada símbolo é único. Por exemplo, se tentarmos criar dois símbolos com o mesmo identificador:

const tom = Symbol("Tom");
console.log(tom);   // Symbol(Tom)

const tomas = Symbol("Tom");
console.log(tomas); // Symbol(Tom)

console.log(tom == tomas);      // false
console.log(tom === tomas);     // false

Mesmo que os dois símbolos sejam inicializados com o mesmo valor, ambos os operadores de igualdade retornam false, confirmando que cada símbolo é de fato único.

Símbolos como identificadores de propriedades de objetos

Os símbolos são frequentemente usados como identificadores para propriedades de objetos, permitindo evitar conflitos onde propriedades poderiam ter o mesmo nome. Em programas grandes ou quando propriedades são adicionadas dinamicamente, controlar esses identificadores pode ser desafiador.

Considere uma empresa com três programadores, onde um é o desenvolvedor sênior e os outros dois são juniores. Curiosamente, dois deles se chamam Tom. Podemos representar esta situação assim:

const company = { 
    "Tom": "senior",
    "Sam": "junior",
    "Tom": "junior"
}
for(developer in company) {
    console.log(`${developer} - ${company[developer]}`);
}

Este código resultará num problema, pois apenas dois desenvolvedores serão listados devido à duplicidade dos nomes:

Tom - junior
Sam - junior

Agora usando símbolos

const company = { 
    [Symbol("Tom")]: "senior",
    [Symbol("Sam")]: "junior",
    [Symbol("Tom")]: "junior"
}
const developers = Object.getOwnPropertySymbols(company);
for(developer of developers) {
    console.log(`${developer.toString()} - ${company[developer]}`);
}

Para obter todos os símbolos de um objeto, usamos Object.getOwnPropertySymbols(). A saída no console mostrará claramente três desenvolvedores, incluindo os dois Toms, mas identificados de maneira única através dos símbolos.

Saída no console:

Symbol(Tom) - senior
Symbol(Sam) - junior
Symbol(Tom) - junior

Adicionando propriedades dinamicamente

Símbolos também podem ser usados para adicionar propriedades de forma dinâmica a um objeto:

const company = {};
company[Symbol("Tom")] = "senior";
company[Symbol("Sam")] = "junior";
company[Symbol("Tom")] = "junior";

Essa flexibilidade dos símbolos oferece uma maneira robusta de manejar identificadores de propriedades em ambientes de programação complexos, onde a clareza e a unicidade são cruciais.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com