Avatar ·

TypeScript: como definir corretamente o tipo para um objeto ao criá-lo (literal)?

Olá a todos! Comecei a aprender TypeScript recentemente e me deparei com uma situação confusa. Quando crio um objeto usando literal (chaves), quero especificar explicitamente seu tipo para que o TypeScript verifique se todos os campos estão presentes e com os tipos corretos. Aqui está o que faço: ```typescript interface User { name: string; age: number; } // Tentando especificar o tipo ao criar o objeto const user: User = { name: "Anna", age: 25, // Digamos que acidentalmente adicionei um campo extra role: "admin" }; ``` Eu esperava que o TypeScript gerasse um erro em `role`, porque ele não está na interface `User`. Mas às vezes ele fica em silêncio ou se comporta de forma estranha. Além disso, vi que posso usar `as User` ou `const user = { name: "Anna", age: 25 } satisfies User`. Qual é a maneira correta? Qual é a diferença? E como fazer o TypeScript verificar rigorosamente se o objeto não tem campos extras? Desde já agradeço pela ajuda! <<>>

Por que surge a confusão e como funcionam as diferentes abordagens

Você se deparou com um class...