TypeScript: cómo definir correctamente el tipo para un objeto al crearlo (literal)?
¡Hola a todos! Acabo de empezar a aprender TypeScript y me encontré con una situación confusa. Cuando creo un objeto mediante un literal (llaves), quiero especificar explícitamente su tipo para que TypeScript verifique que todos los campos estén presentes y sean del tipo correcto.
Esto es lo que hago:
```typescript
interface User {
name: string;
age: number;
}
// Intento especificar el tipo al crear el objeto
const user: User = {
name: "Anna",
age: 25,
// Supongamos que accidentalmente añadí un campo extra
role: "admin"
};
```
Esperaba que TypeScript diera un error en `role`, porque no está en la interface `User`. Pero a veces se calla o se comporta de manera extraña. Además, vi que se puede usar `as User` o `const user = { name: "Anna", age: 25 } satisfies User`. ¿Cuál es la forma correcta? ¿Cuál es la diferencia? ¿Y cómo hago para que TypeScript verifique estrictamente que el objeto no tenga campos extra? ¡Gracias de antemano por la ayuda!
<<>>
Por qué surge la confusión y cómo funcionan los diferentes enfoques
Te has encontrado con un clás