Erro TypeScript: parâmetro de índice não pode ser do tipo união (union)
Olá a todos! Sou novo em TypeScript e me deparei com um erro confuso. Estou tentando criar um objeto onde as chaves podem ser apenas dois tipos de string: `'user'` ou `'admin'`. Escrevi o seguinte código:
```typescript
type Role = 'user' | 'admin';
interface UserData {
name: string;
age: number;
}
// Tentando criar um objeto onde a chave é o papel e o valor são os dados do usuário
const users: { [key: Role]: UserData } = {};
```
Mas o TypeScript gera um erro: *"An index signature parameter type cannot be a union type. Consider using a mapped object type instead"*. Eu entendo que assinaturas de índice geralmente funcionam com `string`, `number` ou `symbol`, mas por que não posso usar uma união de strings literais? Afinal, também são strings!
Preciso que o objeto `users` contenha garantidamente apenas as chaves `'user'` e `'admin'`, e que ao tentar acessar `users['guest']` o TypeScript gere um erro em tempo de compilação. Como fazer isso corretamente? Existe alguma sintaxe diferente para esses casos?