typeof

Zwraca napis z nazwą typu wartości, np. "number", "string" albo "object".

Zwraca
Napis z nazwą typu: "undefined", "boolean", "number", "bigint", "string", "symbol", "function" lub "object".
Na tej stronie

Przykład

#
JavaScript
console.log(typeof 42)
console.log(typeof 'Ania')
console.log(typeof true)
console.log(typeof undefined)
console.log(typeof { level: 1 })
console.log(typeof (() => {}))
Konsola
number
string
boolean
undefined
object
function

Definicja i zastosowanie

#

Operator typeof sprawdza, jakiego typu jest wartość, i zwraca odpowiedź jako napis. Możliwe wyniki to: "undefined", "boolean", "number", "bigint", "string", "symbol", "function" i "object".

Przydaje się do sprawdzania argumentów funkcji i danych z zewnątrz, np. czy użytkownik naprawdę podał liczbę. Można go użyć także na niezadeklarowanej zmiennej: zwróci wtedy "undefined" zamiast błędu, dlatego służy do sprawdzania, czy dane API istnieje w środowisku.

Ma dwie znane pułapki. typeof null zwraca "object", co jest historycznym błędem języka. Tablice to też "object", więc do ich rozpoznania służy Array.isArray(). Warto też pamiętać, że NaN ma typ "number".

Składnia

#
Składnia
typeof operand
typeof (expression)

Więcej przykładów

#
Pułapki: null, tablice i NaN
JavaScript
console.log(typeof null)
console.log(typeof [1, 2, 3])
console.log(Array.isArray([1, 2, 3]))
console.log(typeof NaN)
Konsola
object
object
true
number
Sprawdzanie argumentu
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'))
Konsola
120
100
Niezadeklarowana zmienna i wykrywanie API
JavaScript
console.log(typeof notDeclared)

if (typeof structuredClone === 'function') {
  console.log('Można użyć structuredClone()')
}
Konsola
undefined
Można użyć structuredClone()

Zwykły odczyt niezadeklarowanej zmiennej rzuca ReferenceError, a typeof zwraca wtedy "undefined". Wyjątkiem są zmienne let i const użyte przed deklaracją: tu nadal dostaniesz błąd.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Do sprawdzania null używaj value === null, a do tablic Array.isArray(value). typeof w obu przypadkach zwróci "object".
  • Instancje klas, np. Date czy Twoich własnych, rozpoznasz operatorem instanceof. typeof zwróci dla nich po prostu "object".
  • Pamiętaj o priorytecie: typeof a + b to (typeof a) + b. Aby sprawdzić typ wyniku wyrażenia, dodaj nawiasy: typeof (a + b).

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.