typeof
L’operatore typeof in JavaScript serve a determinare il tipo di dato di una variabile o di un valore.
Restituisce sempre una stringa che rappresenta il tipo.
È uno strumento fondamentale per:
- controllare il tipo di una variabile
- prevenire errori
- scrivere codice più robusto e sicuro
Sintassi
typeof valore;Oppure:
typeof valore;Entrambe le forme sono valide.
Tipi restituiti da typeof
| Valore | Risultato di typeof |
|---|---|
42 | "number" |
10n | "bigint" |
"ciao" | "string" |
true / false | "boolean" |
undefined | "undefined" |
null | "object" !! |
Symbol() | "symbol" |
{} | "object" |
[] | "object" |
function(){} | "function" |
Il caso speciale di null
typeof null; // "object"Questo è un bug storico di JavaScript.
null non è un oggetto, ma typeof lo segnala come tale per motivi di compatibilità.
Per controllare correttamente null:
valore === null;Funzioni
typeof function () {}; // "function"Tecnicamente le funzioni sono oggetti, ma typeof restituisce "function" per comodità.
Oggetti e array
typeof {}; // "object"
typeof []; // "object"Per distinguere un array:
Array.isArray(valore);typeof con variabili non dichiarate
typeof variabileInesistente; // "undefined"A differenza di un accesso diretto, non genera errore. Questo lo rende utile per verifiche di sicurezza.
Controlli di tipo comuni
if (typeof x === "string") {
// x è una stringa
}
if (typeof y === "number") {
// y è un numero
}
if (typeof fn === "function") {
fn();
}typeof e strict comparison
typeof restituisce una stringa, quindi va sempre confrontato con stringhe:
typeof 5 === "number"; // trueTipi non distinguibili con typeof
| Valore | typeof |
|---|---|
null | ”object” |
{} | ”object” |
[] | ”object” |
new Date() | ”object” |
Per questi casi servono controlli aggiuntivi:
valore === null;
Array.isArray(valore);
valore instanceof Date;Best practice
- Usa
typeofper controlli di tipo primitivi - Non usarlo per distinguere array, oggetti o
null - Combinalo con altri controlli quando lavori con strutture complesse
Riepilogo
| Tipo JavaScript | typeof restituisce |
|---|---|
| Number | ”number” |
| BigInt | ”bigint” |
| String | ”string” |
| Boolean | ”boolean” |
| Undefined | ”undefined” |
| Null | ”object” (errore storico) |
| Symbol | ”symbol” |
| Object | ”object” |
| Function | ”function” |
typeof è uno strumento semplice ma potente: usato correttamente permette di scrivere codice più sicuro, leggibile e prevedibile.