Diferencia entre null y undefined TypeScript

Tiempo de lectura: < 1 minuto

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

Monte en blanco y negro

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ísticanullundefined
SignificadoAusencia de valor intencionadaVariable no inicializada o sin retorno
Valor por defectoNoSí, en variables no inicializadas
Puede asignarse explícitamente
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.

Deja un comentario