Artículo de demostración: los ejemplos son genéricos y están pensados para mostrar cómo integrar imágenes y código en el blog. Puedes sustituirlos por tus propios casos.
TypeScript ayuda a detectar errores, pero sus tipos desaparecen en tiempo de ejecución. Por eso no basta con declarar que una respuesta de una API tiene forma de User: hay que comprobar que los datos recibidos realmente cumplen ese contrato.
Estos tres hábitos hacen que esa frontera sea más explícita.
1. Validar los datos en los bordes
Los datos externos deben tratarse como unknown, no como si fueran fiables. Una función de validación puede comprobar su estructura antes de permitir que el resto de la aplicación los utilice.

type User = {
id: string;
name: string;
};
function isUser(value: unknown): value is User {
if (typeof value !== 'object' || value === null) return false;
const record = value as Record<string, unknown>;
return typeof record.id === 'string'
&& typeof record.name === 'string';
}
const payload: unknown = await response.json();
if (!isUser(payload)) {
throw new Error('La respuesta no contiene un usuario válido');
}
console.log(payload.name); // TypeScript ya conoce el tipo User
La función no convierte mágicamente un dato incorrecto en uno correcto: comprueba las propiedades que necesita el código y devuelve false si no se cumplen.
2. Separar la entrada del modelo de dominio
Una respuesta externa puede contener campos opcionales, nombres distintos o valores inesperados. Es preferible validar y transformar esa respuesta en un punto concreto, en lugar de repartir comprobaciones por toda la aplicación.

Esto también facilita las pruebas: se pueden probar por separado los datos válidos, los campos ausentes y los tipos incorrectos.
3. Nombrar los tipos según su intención
Un tipo llamado Data dice muy poco. En cambio, UserProfile, ArticleSummary o ApiError explican qué representa el dato y dónde encaja.
Los nombres claros reducen la necesidad de comentarios y hacen que las funciones públicas sean más fáciles de entender. También ayudan a distinguir entre una respuesta de API y el modelo que utiliza la interfaz.
Una regla práctica
Usa tipos para describir los datos que esperas y validaciones para comprobar los datos que realmente recibes. Son dos responsabilidades distintas y se complementan.
