typeof
Renvoie une chaîne avec le nom du type d’une valeur, par ex. "number", "string" ou "object".
- Renvoie
- Une chaîne avec le nom du type :
"undefined","boolean","number","bigint","string","symbol","function"ou"object".
Exemple
#console.log(typeof 42)
console.log(typeof 'Léa')
console.log(typeof true)
console.log(typeof undefined)
console.log(typeof { level: 1 })
console.log(typeof (() => {}))Définition et utilisation
#L’opérateur typeof vérifie de quel type est une valeur et renvoie la réponse sous forme de chaîne. Les résultats possibles sont : "undefined", "boolean", "number", "bigint", "string", "symbol", "function" et "object".
Il est utile pour vérifier les arguments d’une fonction et les données externes, par ex. si l’utilisateur a vraiment fourni un nombre. Vous pouvez aussi l’utiliser sur une variable non déclarée : il renverra alors "undefined" au lieu d’une erreur, ce qui permet de vérifier si une API existe dans l’environnement.
Il a deux pièges connus. typeof null renvoie "object", ce qui est une erreur historique du langage. Les tableaux sont aussi "object", donc on utilise Array.isArray() pour les reconnaître. Il vaut aussi la peine de se rappeler que NaN a le type "number".
Syntaxe
#typeof operand
typeof (expression)Plus d’exemples
#console.log(typeof null)
console.log(typeof [1, 2, 3])
console.log(Array.isArray([1, 2, 3]))
console.log(typeof NaN)function addPoints(current, amount) {
if (typeof amount !== 'number' || Number.isNaN(amount)) {
return current
}
return current + amount
}
console.log(addPoints(100, 20))
console.log(addPoints(100, '20'))console.log(typeof notDeclared)
if (typeof structuredClone === 'function') {
console.log('On peut utiliser structuredClone()')
}La lecture normale d’une variable non déclarée lève une ReferenceError, alors que typeof renvoie dans ce cas "undefined". L’exception concerne les variables let et const utilisées avant leur déclaration : là, vous obtiendrez tout de même une erreur.
Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Pour vérifier
null, utilisezvalue === null, et pour les tableaux,Array.isArray(value).typeofrenverra"object"dans les deux cas. - Vous reconnaîtrez les instances de classes, par ex.
Dateou les vôtres, avec l’opérateurinstanceof.typeofrenverra simplement"object"pour elles. - N’oubliez pas la priorité :
typeof a + béquivaut à(typeof a) + b. Pour vérifier le type du résultat d’une expression, ajoutez des parenthèses :typeof (a + b).
Entrées associées
#- ===L’opérateur d’égalité stricte compare des valeurs sans conversion de types : true n’est obtenu que pour le même type et la même valeur.
- Array.isArray()Vérifie si une valeur est un tableau.
- Number.isNaN()Vérifie si une valeur est exactement NaN.
- ?.L’opérateur ?. (optional chaining) lit une propriété de façon sûre. Quand l’objet est null ou undefined, il renvoie undefined au lieu d’une erreur.
- instanceofVérifie si un objet a été créé par une classe donnée, ou par une classe qui en hérite.
- SymbolUn type primitif pour créer des identifiants uniques, par ex. des clés de propriété qui n’entrent jamais en collision avec d’autres.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.