Avatar ·

O que significa "keyof typeof" no TypeScript e como funciona?

Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com a construção `keyof typeof`, que aparece em alguns exemplos de código. Eu entendo que `keyof` é usado para obter as chaves de uma interface ou tipo, e `typeof` é usado para obter o tipo de uma variável. Mas quando eles são combinados, fico confuso.\n\nPor exemplo, tenho este código:\n\n```typescript\nconst colors = {\n red: '#ff0000',\n green: '#00ff00',\n blue: '#0000ff'\n};\n\ntype ColorKeys = keyof typeof colors;\n```\n\nO que está acontecendo aqui? Por que não posso simplesmente escrever `keyof colors`? E o que exatamente é obtido no final? Tentei usar isso em uma função que recebe uma chave de objeto, mas o TypeScript reclama dos tipos.\n\nVocês podem explicar em palavras simples como funciona a combinação `keyof typeof` e em quais situações é melhor usá-la?