Les types de données de JavaScript

5 min de lecture

Revenons un peu en arrière et parlons des types de données en JavaScript.

On a déjà eu l'occasion de tester très rapidement un petit algorithme, mais on n'a pas parlé des types de données !

Qu'est-ce qu'un type de données ?

Un type de données est une classification qui définit le type de valeur qu'une variable peut contenir.

Dans notre code précédent, nous avions utilisé :

  • const nom = prompt("Entrez votre nom :"); pour demander le nom de l'utilisateur.
  • const age = prompt("Entrez votre âge :"); pour demander l'âge de l'utilisateur.

Pour les variables nom et age, on a utilisé la fonction prompt() qui renvoie une chaîne de caractères.
On a donc deux variables de type string (chaîne de caractères) !

Les types de données en JavaScript

JavaScript prend en charge plusieurs types de données, notamment :

  • String : Représente une chaîne de caractères.
  • Number : Représente un nombre (entier ou décimal).
  • Boolean : Représente une valeur booléenne (vrai ou faux).
  • Object : Représente un objet, qui est une collection de paires clé-valeur.
  • Array : Représente un tableau, qui est une collection ordonnée de valeurs.
  • Null : Représente une valeur nulle ou absente.
  • Undefined : Représente une variable qui n'a pas été initialisée.

On parle ici de types primitifs et de types complexes.

  • Les types primitifs sont les types de données de base, comme string, number, boolean, null et undefined.
  • Les types complexes sont des types de données plus avancés, comme object et array.

OK, et à quoi ça va m'avancer ?

En gros, les types de données sont importants car ils nous permettent de savoir quel type de valeur on manipule dans notre code.

Ça nous aide à éviter les erreurs et à écrire du code plus propre et plus lisible.

Avant de passer à des exemples plus concrets, voyons un peu chaque type de données en détail.

String

Une chaîne de caractères (alpha-numérique) est une séquence de caractères entourée de guillemets ("contenu"), d'apostrophes ('contenu'), ou de backticks (`contenu`).

Number

Un nombre peut être un entier ou un nombre à virgule flottante (décimal).
Il n'y a pas de distinction entre les deux en JavaScript, tout est considéré comme un nombre.

Boolean

Un booléen est une valeur qui peut être soit true (vrai) soit false (faux).
Il est souvent utilisé pour représenter des conditions ou des états.

Null

Le type null représente une valeur nulle ou absente.
Il est souvent utilisé pour indiquer qu'une variable n'a pas de valeur ou qu'elle a été explicitement définie comme nulle.

Undefined

Le type undefined représente une variable qui n'a pas été initialisée.
Il est souvent utilisé pour indiquer qu'une variable n'a pas encore de valeur ou qu'elle n'a pas été définie.

Il est important de noter que undefined est différent de null.
undefined signifie qu'une variable n'a pas été initialisée, tandis que null signifie qu'une variable a été explicitement définie comme nulle.

Object

Un objet est une collection de paires clé-valeur.
Il est souvent utilisé pour représenter des entités complexes avec plusieurs propriétés.

Pour les personnes qui viennent de PHP, on peut dire que c'est un peu comme un tableau associatif. Un objet est défini entre accolades {} et chaque paire clé-valeur est séparée par une virgule.

Par exemple :

const personne = {
	nom: "John",
	age: 30,
};

console.log(personne.nom); // Affiche "John"
console.log(personne.age); // Affiche 30

Array

Un tableau est une collection ordonnée de valeurs.
Il est souvent utilisé pour représenter des listes ou des ensembles de données.

Un tableau est défini entre crochets [] et chaque valeur est séparée par une virgule.
Son fonctionnement est identique à celui d'un tableau en PHP.

Par exemple :

const fruits = ["pomme", "banane", "orange"];

console.log(fruits[0]); // Affiche "pomme"
console.log(fruits[1]); // Affiche "banane"
console.log(fruits[2]); // Affiche "orange"

Autres types

Il existe d'autres types de données en JavaScript, comme symbol et bigint, mais ils sont moins couramment utilisés.

Le type symbol est utilisé pour créer des identifiants uniques et immuables, tandis que le type bigint est utilisé pour représenter des entiers de grande taille.

Pourquoi se casser la tête avec les types de données ?

C'est effectivement une très bonne question, surtout quand on se dit que JavaScript est un langage à typage faible.

Mais ce n'est pas parce qu'il est à typage faible qu'il ne faut pas se soucier des types de données !

Par exemple... D'après toi, que va afficher le code suivant ?

const a = 5;
const b = "10";

const resultat = a + b;

Si tu as répondu 15, laisse-moi te dire que ce n'est pas la bonne réponse !
En fait, le code va afficher 510.

Maintenant, deuxième question :
Est-ce que la variable estVrai vaut true ou false ?

const a = 5;
const b = "5";

const estVrai = a == b;

Et là, tu as répondu false ? Raté !
La variable estVrai vaut true.

Mais alors, pourquoi ça ne fonctionne pas comme on l'attend ?

La coercition de type

Dans le premier exemple, on a additionné une chaîne de caractères et un nombre.
Plus précisément, on a additionné le nombre 5 et la chaîne de caractères "10".

Dans le cas d'une addition avec une chaîne de caractères, JavaScript va convertir le nombre en chaîne de caractères et faire une concaténation au lieu d'une addition.
C'est ce qu'on appelle la coercition de type.

Mais alors, pourquoi 5 == "5" vaut true et pas false ?

La raison derrière ce résultat "étrange" est identique à celle de l'addition.
Le nombre 5 est converti en chaîne de caractères "5" et la comparaison est effectuée entre deux chaînes de caractères.

La comparaison stricte

Maintenant, si on veut éviter ce genre de problème, on peut utiliser la comparaison stricte === au lieu de la comparaison faible ==.
La comparaison stricte compare à la fois la valeur et le type de données.

Si on utilise la comparaison stricte, le code va afficher false pour la variable estVrai.

En résumé

  • Utilise == pour comparer des valeurs sans tenir compte du type de données.
  • Utilise === pour comparer des valeurs en tenant compte du type de données.
  • Utilise != pour comparer des valeurs sans tenir compte du type de données.
  • Utilise !== pour comparer des valeurs en tenant compte du type de données.

La conversion de type

La comparaison stricte est une excellente pratique pour éviter les erreurs de type, mais il est parfois nécessaire de convertir explicitement un type de données en un autre.

JavaScript propose plusieurs méthodes pour effectuer cette conversion :

  • String() : Convertit une valeur en chaîne de caractères.
  • Number() : Convertit une valeur en nombre.
  • Boolean() : Convertit une valeur en booléen.
  • parseInt() : Convertit une chaîne de caractères en entier.
  • parseFloat() : Convertit une chaîne de caractères en nombre à virgule flottante.

Attention aux fausses bonnes idées !

J'ai déjà eu l'occasion de voir des développeurs préfixer le symbole + devant une variable ou l'appel d'une fonction pour convertir en nombre.

Par exemple : const age = +prompt("Entrez votre âge :");

Bien que ça fonctionne, c'est une pratique à éviter car elle peut prêter à confusion.
Il est préférable d'utiliser une méthode explicite, lisible et compréhensible par tous.

Par exemple : const age = Number(prompt("Entrez votre âge :"));
On encore : const age = parseInt(prompt("Entrez votre âge :"), 10);

C'est plus long, mais c'est beaucoup plus clair et compréhensible !

Le cas de TypeScript

Puisqu'on parle de JavaScript et de typage, faisons une petite parenthèse sur TypeScript !
On ne va pas chercher à expliquer ce qu'est TypeScript ici, ce sera pour une autre suite d'articles.

Mais pour faire simple, TypeScript est une version de JavaScript qui ajoute un système de typage.
Il permet de définir explicitement le type de chaque variable, ce qui aide à éviter les erreurs de type et à rendre le code plus lisible.

Par exemple, voici comment on pourrait déclarer une variable de type number en TypeScript :

const a = 5; // Type implicite : number

Il est impossible de faire la même chose avec JavaScript, c'est strictement réservé à TypeScript !

C'est quoi ce type `any` ?

Le type any est un type spécial en TypeScript qui permet de désactiver le typage strict.
Il peut être utilisé pour indiquer qu'une variable peut contenir n'importe quel type de valeur (string, number, null, undefined, etc.).

Cependant, il est recommandé d'éviter d'utiliser le type any autant que possible, car il annule les avantages du typage statique.

Et puis surtout... pourquoi utiliser TypeScript si c'est pour faire du JavaScript ?

Conclusion

Voilà, on a fait le tour des types de données en JavaScript !
On a vu les types primitifs et complexes, ainsi que la coercition de type et la conversion de type.

C'est un énorme point qu'on vient d'aborder, c'est normal de ne pas tout comprendre du premier coup.

Avec du temps et de la pratique, tu vas finir par maîtriser tout ça comme un pro ! 💪

Dernières documentations

Introduction à JavaScript

Dernière modification :

Parlons un peu de JavaScript, le langage de programmation incontournable pour le développement web.

La syntaxe de base de JavaScript

Dernière modification :

Découvrons ensemble la syntaxe de base de JavaScript et comment il fonctionne dans le navigateur.

Memento DevMemento Dev

Plateforme de ressources et documentations synthétiques et concises, conçue pour les développeurs ou passionnés de l‘informatique en quête de savoir.


© 2022 - 2025 Memento Dev. Tous droits réservés

Memento Dev est une plateforme open-source, développée par Gauthier Daniels, soutenue et maintenue par une communauté de contributeurs passionnés.