Verificação de tipo por interface em TypeScript: como determinar se um objeto corresponde a uma interface?
Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com um problema. Tenho uma interface `User` e uma função que recebe dados de uma API. Preciso verificar se o objeto recebido corresponde a essa interface.
Aqui está meu código:
```typescript
interface User {
id: number;
name: string;
email: string;
}
function processData(data: unknown) {
// Como verificar se data é um User?
if (data instanceof User) { // Erro: 'User' se refere apenas a um tipo, mas está sendo usado como um valor aqui
console.log(data.name);
}
}
```
Entendo que `instanceof` não funciona com interfaces, porque elas são apagadas durante a execução. Mas como então verificar se o objeto contém todos os campos necessários com os tipos corretos? Vi que é possível usar type guards personalizados, mas não entendo completamente como escrevê-los para interfaces complexas. Existe alguma abordagem padrão ou melhores práticas para verificar tipos em tempo de execução?