Cuando trabajamos con objetos en TypeScript, a menudo terminamos usando as para forzar un tipo, lo que puede llevar a errores si los tipos no coinciden perfectamente.

El truco

// ANTES (mal)
interface User {
  name: string;
  age: number;
}

const user = {
  name: 'Carlos',
  age: 30,
  // typo: 'Developer', accidentalmente añadido
} as User;

// DESPUÉS (bien)
interface User {
  name: string;
  age: number;
}

const user = {
  name: 'Carlos',
  age: 30,
  // typo: 'Developer', accidentalmente añadido
} satisfies User;

El operador satisfies asegura que el objeto cumple con la forma exacta del tipo User, atrapando cualquier propiedad extra inesperada (en este caso, typo). A diferencia de as, que simplemente fuerza el tipo, satisfies actúa como una validación que permite detectar errores en tiempo de compilación.

Usando satisfies, detectamos problemas antes de que lleguen al runtime.