Símbolos (Symbols)

Começando com ECMAScript 2015, symbol é um tipo de dados primitivo, igual ao number e string.

Valores do tipo symbol são criados pela chamada do construtor Symbol.

ts
let sym1 = Symbol();
let sym2 = Symbol("key"); // string opcional

Simbolos são imutáveis e únicos.

ts
let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols são únicos

Igual as strings, símbolos podem ser usados como chaves para propriedades de objetos.

ts
const sym = Symbol();
let obj = {
[sym]: "value",
};
console.log(obj[sym]); // "value"

Símbolos podem também ser combinados com declarações de propriedade computadas para declarar propriedades de objeto e membros de classe.

ts
const getClassNameSymbol = Symbol();
class C {
[getClassNameSymbol]() {
return "C";
}
}
let c = new C();
let className = c[getClassNameSymbol](); // "C"

Símbolos bem conhecidos

Em adição aos símbolos definidos pelo usuário, existem símbolos internos, bem conhecidos. Símbolos internos são usados para representar comportamentos internos das linguagem.

Aqui temos uma lista de símbolos do tipo well-known:

Symbol.hasInstance

Um método que determina se um objeto de um construtor reconhece um objeto como um das instâncias construtoras. Chamados pela semântica do operador instanceof.

Symbol.isConcatSpreadable

Um valor Booleano indicando que um objeto deve ser planificado para o seu array de elementos pelo Array.prototype.concat.

Symbol.iterator

Um método que retorna o iterador padrão para um objeto. Chamado pela semântica da declaração do for-of.

Symbol.match

Um método de expressão regular que compara a expressão regular contra uma string. Chamada pelo método String.prototype.match

Symbol.replace

Um método de expressão regular que substitui substrings que combinam com uma string. Chamado pelo método String.prototype.replace.

Symbol.search

Um método de expressão regular que retorna o índice dentro de uma string que condiz com a expressão regular. Chamado pelo métodoString.prototype.search.

Symbol.species

Uma propriedade com valor de função que é a função construtora que é usada para criar objetos derivados.

Symbol.split

Uma método de expressão regular que divide uma string em índices que condizem com a expressão regular. Chamada pelo método String.prototype.split

Symbol.toPrimitive

Um método que converte um objeto em um valor primitivo correspondente. Chamado pelo operação abstrata ToPrimitive.

Symbol.toStringTag

Uma valor de string que é usado na criação de uma descrição de string padrão de um objeto. Chamado pelo método built-in Object.prototype.toString.

Symbol.unscopables

Um Objeto cujo os próprios nomes são nomes de propriedade que são excluídos da ligação de ambiente dos objetos associados.

The TypeScript docs are an open source project. Help us improve these pages by sending a Pull Request

Contributors to this page:
MHMohamed Hegazy  (52)
RDRafael Dantas  (7)
GBGabriel Burdeti  (2)
OTOrta Therox  (1)
Ff  (1)
7+

Last updated: 28 de set. de 2022