Les Ty­peS­cript enums sont une classe spéciale qui se compose de variables cons­tantes. Vous pouvez définir la valeur de ces variables à l’avance. On distingue les enums nu­mé­riques et les enums basés sur des strings.

Les Ty­peS­cript enums, c’est quoi au juste ?

Les enums (abré­via­tion de « enu­me­ra­ted types », c’est-à-dire « types énumérés ») sont des types de données qui ont un ensemble de valeurs cons­tantes. Cet ensemble de valeurs est déjà clai­re­ment défini lors de la dé­cla­ra­tion d’un enum avec un iden­ti­fi­ca­teur et ne peut pas être modifié par la suite. L’ordre dans lequel les valeurs peuvent ap­pa­raître peut aussi être défini à l’avance. Les Ty­peS­cript enums per­met­tent de créer des variables cons­tantes qui aug­men­tent la li­si­bi­lité de votre code tout en évitant les erreurs. Les enums Ty­peS­cript ne sont pas uni­que­ment une extension typée de Ja­vaS­cript, mais sont trans­pi­lés en objets Ja­vaS­cript standards, ce qui les rend uti­li­sables di­rec­te­ment dans le code Ja­vaS­cript généré.

On distingue les enums nu­mé­riques et les Ty­peS­cript enums basés sur un string. Dé­cou­vrons ensemble les deux variantes.

Managed Nextcloud de IONOS Cloud
Tra­vail­lez en équipe dans votre propre Cloud
  • Sécurité des données
  • Outils de col­la­bo­ra­tion intégrés
  • Hé­ber­ge­ment dans des data centers européens

Ty­peS­cript enums nu­mé­riques

Pour les Ty­peS­cript enums nu­mé­riques, la première valeur par défaut est « 0 ». Par la suite, chaque valeur sup­plé­men­taire est augmentée de « 1 ». La méthode est initiée avec le paramètre enum et stocke les strings en format numérique. Dans l’exemple simple ci-dessous, nous dé­fi­nis­sons les mois et, dans un premier temps, nous leur at­tri­buons une valeur. Ensuite, nous demandons la valeur définie pour le mois d’avril :

enum Mois {
	Janvier,
	Février,
	Mars,
	Avril,
	Mai,
	Juin,
	Juillet,
	Août,
	Septembre,
	Octobre,
	Novembre,
	Décembre
}
let MoisActuel = Mois.Avril;
console.log(MoisActuel);
ty­pes­cript

Le résultat obtenu est le suivant :

3
ty­pes­cript

Par défaut, le système démarre l’af­fec­ta­tion des valeurs à « 0 ». Janvier reçoit donc la valeur « 0 », février la valeur « 1 », mars la valeur « 2 » et avril la valeur re­cher­chée « 3 ». Comme cela ne cor­res­pond pas à la nu­mé­ro­ta­tion réelle des mois, nous ini­tia­li­sons les Ty­peS­cript enums et leur at­tri­buons nous-mêmes les valeurs cor­res­pon­dantes. Pour ce faire, nous devons juste lé­gè­re­ment modifier le code ci-dessus :

enum Mois {
	Janvier = 1,
	Février,
	Mars,
	Avril,
	Mai,
	Juin,
	Juillet,
	Août,
	Septembre,
	Octobre,
	Novembre,
	Décembre
}
let MoisActuel = Mois.Avril;
console.log(MoisActuel);
ty­pes­cript

Désormais le résultat est :

4
ty­pes­cript

Il suffit d’attribuer la valeur souhaitée au premier mois. Le système compte alors comme d’habitude une position de plus.

Attribuer ses propres valeurs nu­mé­riques

Si vous souhaitez éviter le comptage au­to­ma­tique, vous pouvez également attribuer une valeur numérique propre à chaque valeur des enums Ty­peS­cript. Dans l’exemple suivant, nous avons quatre tomes d’une série de romans et sou­hai­tons définir leur nombre de pages comme valeur fixe. Nous sou­hai­tons ensuite vérifier le nombre de pages du deuxième volume. Le code ressemble à ceci :

enum NuméroDePage {
	Tome1 = 491,
	Tome2 = 406,
	Tome3 = 360,
	Tome4 = 301
}
let pages = NuméroDePage.Tome2;
console.log(pages);
ty­pes­cript

Le résultat obtenu est :

406
ty­pes­cript

Ty­peS­cript enums basés sur des strings

Les Ty­peS­cript enums basés sur des strings fonc­tion­nent selon un principe très similaire. Ici, vous n’attribuez pas de valeur numérique aux enums, mais une chaîne de ca­rac­tères (string). Dans l’exemple suivant, nous at­tri­buons à chaque jour de la semaine une abré­via­tion ap­pro­priée selon le format String et la plaçons entre guil­le­mets. Nous ré­cu­pé­rons ensuite les valeurs pour « vendredi » et « mardi » à titre de vé­ri­fi­ca­tion. Le code se présente ainsi :

enum JoursDeSemaine {
Lundi = "lun",
Mardi = "mar",
Mercredi = "mer",
Jeudi = "jeu",
Vendredi = "ven",
Samedi = "sam",
Dimanche = "dim"
};
console.log(JoursDeSemaine.Vendredi);
console.log(JoursDeSemaine.Mardi);
ty­pes­cript

Le résultat cor­res­pon­dant est :

ven
mar
ty­pes­cript

Combiner des numéros et des strings

En théorie, il est aussi tout à fait possible de combiner des Ty­peS­cript enums nu­mé­riques et des enums basés sur string. Les ap­pli­ca­tions possibles pour cette option sont plutôt limitées, mais pour être complet, voici un exemple. Nous dé­fi­nis­sons ici dif­fé­rentes valeurs. La procédure reste néanmoins la même :

enum JoursDeSemaine {
Lundi = "lun",
Mardi = 2,
Mercredi = 3,
Jeudi = "jeu",
Vendredi = "ven",
Samedi = 6,
Dimanche = "di"
};
console.log(JoursDeSemaine.Vendredi);
console.log(JoursDeSemaine.Mardi);
ty­pes­cript

Le résultat obtenu est alors le suivant :

ven
2
ty­pes­cript

Mappage inverse pour les types de données constants

La logique du mappage inverse (à vrai dire une « af­fec­ta­tion inverse ») est la suivante : si on peut accéder à la valeur d’un Ty­peS­cript enum, on peut aussi, si­mul­ta­né­ment, accéder à son nom. Pour mieux com­prendre ce principe, reprenons notre exemple avec les jours de la semaine :

enum JoursDeSemaine {
    Lundi = 1,
    Mardi,
    Mercredi,
    Jeudi,
    Vendredi,
    Samedi,
    Dimanche
}
console.log(JoursDeSemaine.Vendredi); // 5
console.log(JoursDeSemaine["Vendredi"]); // 5
console.log(JoursDeSemaine[5]); // "Samedi"
ty­pes­cript

Dans cet exemple, JoursDeSemaine.Vendredi génère la valeur « 5 ». Il en va de même pour JoursDeSemaine["Vendredi"]. Cependant, grâce au mappage inverse, JoursDeSemaine[5] génère le nom « Samedi ». En voici la dé­mons­tra­tion avec cette commande simple :

enum JoursDeSemaine {
    Lundi = 1,
    Mardi,
    Mercredi,
    Jeudi,
    Vendredi,
    Samedi,
    Dimanche
}
console.log(JoursDeSemaine);
ty­pes­cript

Le résultat est le suivant :

{
    '1': 'Lundi',
    '2': 'Mardi',
    '3': 'Mercredi',
    '4': 'Jeudi',
    '5': 'Vendredi',
    '6': 'Samedi',
    '7': 'Dimanche',
    Lundi: 1,
    Mardi: 2,
    Mercredi: 3,
    Jeudi: 4,
    Vendredi: 5,
    Samedi: 6,
    Dimanche: 7
}
ty­pes­cript

Convertir des Ty­peS­cript enums en arrays

Il est également possible de convertir Ty­peS­cript enums en tableaux (ou Ty­peS­cript arrays). Dans notre exemple reprenant les jours de la semaine ; le code se présente alors comme suit :

enum JoursDeSemaine {
Lundi = "lun",
Mardi = "mar",
Mercredi = "mer",
Jeudi = "jeu",
Vendredi = "ven",
Samedi = "sam",
Dimanche = "dim"
};
const JoursDeSemaineArray: { label: string; value: string }[] = [];
for (const key in JoursDeSemaine) {
    if (JoursDeSemaine.hasOwnProperty(key)) {
        JoursDeSemaineArray.push({ label: key, value: JoursDeSemaine[key] });
    }
}
console.log(JoursDeSemaineArray);
ty­pes­cript

Nous obtenons le résultat suivant :

[
    { label: 'Lundi', value: 'lun' },
    { label: 'Mardi', value: 'mar' },
    { label: 'Mercredi', value: 'mer' },
    { label: 'Jeudi', value: 'jeu' },
    { label: 'Vendredi', value: 'ven' },
    { label: 'Samedi', value: 'sam' },
    { label: 'Dimanche', value: 'dim' }
]
ty­pes­cript
Conseil

Déployez votre site Internet statique ou votre ap­pli­ca­tion di­rec­te­ment via GitHub : avec Deploy Now de IONOS bé­né­fi­ciez d’une ins­tal­la­tion rapide, de workflows optimisés et de dif­fé­rents modèles ta­ri­faires. Trouvez la solution qui convient le mieux à votre projet !

Aller au menu principal