Verificação de tipo de interface em TypeScript: como determinar se um objeto corresponde a uma interface?
Olá, colegas! Comecei a estudar TypeScript e me deparei com um problema que parece elementar, mas não consigo encontrar a solução correta. Eu tenho uma interface:
```typescript
interface User {
name: string;
age: number;
email: string;
}
```
Estou recebendo dados de uma API como `any` ou `unknown`. Preciso verificar se o objeto obtido corresponde à interface `User` antes de usar seus campos. Em JavaScript, eu escreveria `typeof obj.name === 'string'` e assim por diante, mas em TypeScript quero fazer isso de forma elegante, usando os recursos da linguagem.
Tentei escrever `if (obj instanceof User)`, mas o TypeScript reclama que `User` é uma interface, não uma classe. Tentei usar `typeof obj === 'User'` — também não funciona. Pesquisei e encontrei menções sobre type guards e funções personalizadas, mas não entendi completamente como fazer corretamente.
Digam-me, como verificar em TypeScript se um objeto corresponde a uma interface? É importante que a verificação funcione também em tempo de compilação (TypeScr