En TypeScript, null
y undefined
son valores distintos con significados diferentes:

null
- Representa la ausencia intencionada de un valor.
- Se usa cuando queremos indicar explícitamente que una variable o propiedad no tiene un valor asignado.
- No es el valor por defecto de una variable no inicializada.
- Se considera un tipo en TypeScript si se usa con
strictNullChecks
.
let x: null = null; // Correcto let y: string | null = null; // Correcto
undefined
- Indica que una variable ha sido declarada pero aún no tiene un valor asignado.
- Es el valor por defecto de las variables no inicializadas.
- También es el valor de retorno de funciones sin
return
.
let a: undefined = undefined; // Correcto let b: string | undefined; // Correcto, pero sin valor asignado es `undefined` function foo(): void { console.log("Hola"); } let resultado = foo(); // resultado es `undefined`
Diferencias clave
Característica | null | undefined |
---|---|---|
Significado | Ausencia de valor intencionada | Variable no inicializada o sin retorno |
Valor por defecto | No | Sí, en variables no inicializadas |
Puede asignarse explícitamente | Sí | Sí |
En typeof | "object" | "undefined" |
En TypeScript, si strictNullChecks
está activado, null
y undefined
deben manejarse explícitamente, por ejemplo:
let valor: string | null | undefined; valor = "Hola"; // OK valor = null; // OK valor = undefined; // OK valor = 10; // ❌ Error
Si strictNullChecks
está desactivado, null
y undefined
pueden asignarse a cualquier variable, lo que puede generar errores en tiempo de ejecución.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.