Uma configuração de rotas precisa respeitar o mesmo formato em cada entrada. Ao anotar o objeto inteiro como Record<string, Route>, o TypeScript passa a enxergá-lo pelo tipo mais amplo. Com satisfies, você pode validar cada entrada e ainda obter a união dos nomes declarados.
type Route = { path: string; requiresLogin: boolean }
const routes = {
home: { path: "/", requiresLogin: false },
settings: { path: "/settings", requiresLogin: true },
} satisfies Record<string, Route>
type RouteName = keyof typeof routes
RouteName aceita "home" e "settings". Se você trocar requiresLogin por uma string, o compilador aponta a entrada inválida. Se precisa exigir um conjunto fechado de chaves, substitua string no Record pela união esperada.
Use com objetos definidos no código
O operador é útil em mapas de mensagens, tabelas de permissões e configurações mantidas no repositório. Ele verifica o código durante a compilação. Um objeto recebido por HTTP continua precisando de validação em tempo de execução. Veja como validar JSON com unknown.