É possível estender tipos em TypeScript, como interfaces?
Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com uma dúvida. Eu sei que interfaces podem ser estendidas com `extends`. Por exemplo:
```typescript
interface User {
name: string;
}
interface AdminUser extends User {
role: string;
}
```
Isso funciona perfeitamente. Mas quando tento fazer o mesmo com tipos (type alias), não consigo:
```typescript
type User = {
name: string;
};
type AdminUser extends User { // ❌ Erro: 'extends' não funciona com tipos
role: string;
}
```
Tentei várias alternativas, mas o TypeScript reclama. Na internet dizem que tipos podem ser estendidos com interseções (&), mas não entendo completamente como fazer isso corretamente e qual a diferença entre interfaces e tipos no contexto de extensão.
Por favor, me expliquem como estender tipos corretamente? É possível fazer isso? E se sim, quando é melhor usar `extends` para interfaces e quando usar interseções para tipos?
Desde já, agradeço pela ajuda!