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...