Types



Intuition et typage dynamique

Naturellement, si je vous dis quel est le type de données de 42, vous me direz un nombre. Si je vous dis 31.10.2020, vous comprennez que c'est une date, si je dis Bonjour Le Monde vous comprenez que c'est un texte etc.

Aussi, vous assumerez que certaines opérations sont possibles:

  • 42+3 vaut 45, car ce sont des nombres

  • 30.2020+3 vaut le 3.11.2020 car c'est une date plus trois jours

  • Bonjour Le Monde+3 vaut Bonjour Le Monde3 car c'est un texte


En JavaScript, c'est pareil:

  • JavaScript déduit le type de valeurs que l'on utilise

    • Si cela commence par un chiffre -> c'est sans doute un nombre car les instuctions dans le code source et les variables ne peuvent pas commencer par un chiffre.

    • Si cela commence par " ou ' -> c'est un sans doute une chaine de caractère

    • Si cela commence par une lettre ou _ -> c'est sans doute une instruction ou une variable.

  • Javascript va adapter ses opérations en fonction du type des valeurs utilisées

Le texte: chaines de caractères/ String

Le texte est représenté en JavaScript sous le type de chaine de caractère, aussi appelé String.

Pour faire la différence entre les instructions du code source (qui sont tapées au clavier elles aussi), les nombres et les chaines de caractères, on représente les chaines de caractère entre guillements " " ou entre apostrophes ' '. Tout ce qui n'est pas entre guillements ou apostrophes va tenter d'être "compris" comme une instruction ou une variable par JavaScript.


Pour utiliser des guillemets ou des apostrophes dans des chaines de caractères, il suffit de :

  • remplacer " par \" dans la chaine de caractères

  • remplacer ' par \' dans la chaine de caractères


Pour écrire une chaine de caractères très longue sur plusieurs lignes, il suffit d'utiliser \ à la fin de chaque ligne:

exemple:

"une chaine de catactères très longue en JS";

devient

"une chaine\

de catactères \

très longue en\

JS";



Les nombres: entiers, réels

Les nombres sont représentés en JavaScript sous le type de Number, ainsi que de BigInt.

Pour faire la différence entre les instructions du code source (qui sont tapées au clavier elles aussi), les nombres et les chaines de caractères, on représente les Number en utilisant des chiffres (ne commence pas par des ", des ' ou des lettres ni des caractères spéciaux).

Les Number vont des valeurs -(253 - 1) et (253 - 1) et peuvent avoir des chiffres après la virgule. Ils sont représentés par des chiffres seulement, éventuellement avec un "." pour les chiffres après la virgule et le signe "-" pour les nombres négatifs.

Les BigInt ne sont que des entiers et peuvent aller au delà de 253. Ils sont représentés par des chiffres, avec éventuellement le signe "-" pour les nombres négatifs. On ne peut pas mettre de chiffre après la virgule.



Les booléens

Les booléens sont des valeurs qui prennent les valeurs vrai ou faux.

Pour faire la différence entre les instructions du code source (qui sont tapées au clavier elles aussi), les nombres et les chaines de caractères, on représente les Booleans en utilisant les expression true ou false sans guillements (sinon, c'est une chaine de caractère!).

Les expressions qui sont "évaluées" renverront également un booléen:

  • si on vérifie si a est égal à b, la valeur sera true si c'est le cas, ou false le cas contraire.

  • si on vérifie si a n'est PAS égal à b, la valeur sera true si c'est le cas, ou false le cas contraire.

  • si on vérifie si a est supérieur à b, la valeur sera true si c'est le cas, ou false le cas contraire.

  • etc.


Si la valeur est omise ou est 0 ou -0, null, false, NaN, undefined ou une chaine de caractères vide (""), l'objet a un valeur initiale à false (faux).

Toutes les autres valeurs, y compris n'importe quel objet, un tableau vide ([]), ou une chaine de caractères "false", créént un objet avec une valeur initiale à true (vrai).



Le temps : Date

En Javascript, les structures de données dédiées au temps sont les Dates




Les ensembles: Tableaux Array et dictionnaires Set

En Javascript, les structures de données dédiées aux ensembles de données sont les Array et les Set





Conversion explicite

En Javascript, vous pouvez "obliger" une donnée d'être dans un certain type, par exemple en obligeant 42 à être un texte ou un BigInt au lieu d'un nombre.


Pour convertir en chaine de catactère String : String( maValeurAConvertir)

Pour convertir en nombre Number : Number( maValeurAConvertir)

Pour convertir en nombre BigInt : BigInt( maValeurAConvertir)