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".
Sur cette page

Exemple

#
JavaScript
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 (() => {}))
Console
number
string
boolean
undefined
object
function

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

#
Syntaxe
typeof operand
typeof (expression)

Plus d’exemples

#
Pièges : null, tableaux et NaN
JavaScript
console.log(typeof null)
console.log(typeof [1, 2, 3])
console.log(Array.isArray([1, 2, 3]))
console.log(typeof NaN)
Console
object
object
true
number
Vérifier un argument
JavaScript
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
120
100
Variable non déclarée et détection d’API
JavaScript
console.log(typeof notDeclared)

if (typeof structuredClone === 'function') {
  console.log('On peut utiliser structuredClone()')
}
Console
undefined
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, utilisez value === null, et pour les tableaux, Array.isArray(value). typeof renverra "object" dans les deux cas.
  • Vous reconnaîtrez les instances de classes, par ex. Date ou les vôtres, avec l’opérateur instanceof. typeof renverra 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

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.