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.