TypeScript - Symboles : Un Guide Pour Les Débutants

Salut là, futur super star du codage ! Aujourd'hui, nous allons entreprendre un voyage passionnant à la découverte du monde des symboles TypeScript. Ne t'inquiète pas si tu n'as jamais programmé auparavant - je serai ton guide amical, et nous explorerons ce sujet pas à pas. Alors, prends une tasse de ta boisson favorite, et plongeons dedans !

TypeScript - Symbols

Qu'est-ce que les Symboles ?

Avant de rentrer dans les détails, comprensons ce qu'est un symbole. Imagine que tu as un coffre au trésor, et que tu as besoin d'une clé unique pour l'ouvrir. En TypeScript, les symboles sont comme ces clés uniques - ce sont des identifiants spéciaux et uniques que tu peux utiliser dans ton code.

Syntaxe : Comment Créer des Symboles

Créer un symbole est aussi simple que de faire un sandwich (peut-être même plus simple !). Voici comment tu fais :

let monSymbole = Symbol();

C'est tout ! Tu viens de créer ton premier symbole. Mais attend, il y a plus ! Tu peux aussi donner une description à ton symbole :

let symboleNomme = Symbol("Ceci est mon symbole spécial");

Pense à cette description comme une étiquette d'identité pour ton symbole. Elle n'affecte pas l'unicité du symbole, mais elle peut t'aider à l'identifier plus tard.

Un Petit Exercice

Créons deux symboles et comparons-les :

let symbole1 = Symbol();
let symbole2 = Symbol();

console.log(symbole1 === symbole2); // Output : false

Même si les deux symboles ont été créés sans description, ils restent uniques. C'est comme des jumeaux - ils peuvent avoir l'air pareil, mais ils sont des individus différents !

Les Symboles sont Uniques et Immuables

Maintenant, parlons de deux gros mots : unique et immuable.

Unique

Chaque symbole que tu crées est unique, comme une flocon de neige. Même si tu crées deux symboles avec la même description, ils restent différents :

let sym1 = Symbol("monSymbole");
let sym2 = Symbol("monSymbole");

console.log(sym1 === sym2); // Output : false

Immuable

Une fois qu'un symbole est créé, tu ne peux pas le modifier. C'est comme graver quelque chose dans la pierre - c'est là pour toujours.

let symboleImmuable = Symbol("Je ne peux pas changer");
// Il n'y a aucun moyen de modifier symboleImmuable !

Symboles comme Clés des Propriétés d'Objet

Une des choses les plus géniales à propos des symboles, c'est qu'ils peuvent être utilisés comme clés pour les propriétés des objets. C'est comme avoir une compartiment secret dans ton coffre au trésor que seulement toi tu connais !

let cleSpciale = Symbol("compartimentSecret");

let coffreAuTresor = {
[cleSpciale]: "Trésor caché !",
or: 100,
argent: 200
};

console.log(coffreAuTresor[cleSpciale]); // Output : "Trésor caché !"
console.log(coffreAuTresor.or); // Output : 100

Dans cet exemple, cleSpciale est un symbole que nous utilisons pour accéder à une propriété secrète de notre objet coffreAuTresor. Les clés régulières comme or fonctionnent comme d'habitude, mais notre clé symbole ajoute une couche de unicité.

Symboles avec l'Instruction Switch

Les symboles peuvent aussi être utilisés dans des instructions switch. C'est comme avoir une serrure spéciale qui ne s'ouvre que pour des clés spécifiques :

let symboleAction = Symbol("action");

switch (symboleAction) {
case Symbol("action"):
console.log("Ce ne sera pas affiché");
break;
case symboleAction:
console.log("Ce sera affiché");
break;
default:
console.log("Cas par défaut");
}

Souviens-toi, même si nous avons Symbol("action") dans le premier cas, ce n'est pas le même que notre symboleAction. Chaque symbole est unique !

Symboles Uniques

TypeScript a aussi un concept appelé "symboles uniques". Ceux-ci sont encore plus spéciaux - ce sont des symboles que TypeScript traite comme ayant un type complètement unique :

const symboleUnique: unique symbol = Symbol("Je suis unique !");

// Cela fonctionne :
let variableSym1: typeof symboleUnique = symboleUnique;

// Cela ne fonctionne pas :
// let variableSym2: unique symbol = Symbol("Je suis aussi unique !");
// Erreur : Une variable dont le type est un 'unique symbol' doit être 'const'.

Les symboles uniques doivent être déclarés avec const, et ils ne peuvent pas être recréés. Ils sont comme des éditions limitées - une fois qu'ils sont partis, ils sont partis !

Méthodes pour Travailler avec les Symboles

Jetons un œil à quelques méthodes pratiques pour travailler avec les symboles :

Méthode Description Exemple
Symbol.for() Crée un symbole dans un registre de symboles global let symboleGlobal = Symbol.for("monSymboleGlobal");
Symbol.keyFor() Récupère la clé d'un symbole dans le registre de symboles global let cle = Symbol.keyFor(symboleGlobal);
Object.getOwnPropertySymbols() Retourne un tableau de toutes les propriétés symboles trouvées dans un objet donné let symboles = Object.getOwnPropertySymbols(monObjet);

Voici un exemple rapide de l'utilisation de ces méthodes :

let symboleGlobal = Symbol.for("monSymboleGlobal");
console.log(Symbol.keyFor(symboleGlobal)); // Output : "monSymboleGlobal"

let obj = {
[Symbol("cle1")]: "valeur1",
[Symbol("cle2")]: "valeur2"
};

console.log(Object.getOwnPropertySymbols(obj).length); // Output : 2

Et voilà ! Tu viens de terminer ton cours accéléré sur les symboles TypeScript. Souviens-toi, la pratique rend parfait, donc n'hesite pas à expérimenter avec ces concepts dans ton propre code. Qui sait ? Tu pourrais juste débloquer des super pouvoirs de codage en chemin !

Bonne programmation, futur mage TypeScript ! ?‍♂️✨

Credits: Image by storyset