Avatar ·

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