Padrões Práticos com satisfies
Aplique satisfies a objetos de configuração e tabelas de consulta.
Padrões Práticos com satisfies é uma aula grátis de TypeScript Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de TypeScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de TypeScript Academy inclui 4 aulas no total.
Validando uma Paleta de Cores
Um padrão comum para uma paleta é satisfies Record<string, Color>: cada valor é verificado para garantir que seja uma cor válida, enquanto as chaves permanecem exatas para o preenchimento automático.
type Color = "red" | "green" | "blue";
const palette = {
primary: "blue",
secondary: "green"
} satisfies Record<string, Color>;
console.log(palette.primary);Detectando Valores Inválidos na Paleta
Se um valor não for um Color válido, satisfies gera um erro, enquanto as chaves continuam tipadas com precisão.
type Color = "red" | "green" | "blue";
// const bad = { primary: "purple" } satisfies Record<string, Color>; // Error
const ok = { primary: "red" } satisfies Record<string, Color>;
console.log(ok.primary);Mantendo o Preenchimento Automático das Chaves
Como as chaves inferidas são "primary" | "secondary", o editor oferece preenchimento automático para elas, ao contrário de uma anotação Record simples, que perderia as chaves específicas.
type Color = "red" | "green" | "blue";
const palette = { primary: "red", accent: "blue" } satisfies Record<string, Color>;
// palette.<autocomplete: primary, accent>
console.log(palette.accent);Validando um Mapa de Rotas
Os mapas de rotas também se beneficiam: os valores precisam corresponder à estrutura de um manipulador, enquanto os nomes das rotas permanecem conhecidos para os auxiliares de navegação.
type Route = { method: "GET" | "POST"; path: string };
const routes = {
home: { method: "GET", path: "/" },
login: { method: "POST", path: "/login" }
} satisfies Record<string, Route>;
console.log(routes.login.method);Indexando o Mapa
Com as chaves preservadas, você pode criar um tipo de nomes de rotas válidos e indexar o tipo do mapa com segurança de tipos.
type Route = { method: string; path: string };
const routes = {
home: { method: "GET", path: "/" },
about: { method: "GET", path: "/about" }
} satisfies Record<string, Route>;
type RouteName = keyof typeof routes; // "home" | "about"
const pick: RouteName = "about";
console.log(routes[pick].path);Config Tipado com Valores Variados
satisfies também funciona quando os valores têm estruturas diferentes. Restrinja-os com um tipo de união, e cada valor será validado em relação a ele.
type Setting = number | boolean | string;
const config = {
retries: 3,
verbose: true,
region: "eu"
} satisfies Record<string, Setting>;
console.log(config.retries, config.verbose);Tabelas de Consulta Semelhantes a Enumerações
Crie uma tabela de consulta validada em relação a um tipo de valor, mantendo cada entrada exata para uso posterior.
type Status = "active" | "inactive";
const userStatus = {
alice: "active",
bob: "inactive"
} satisfies Record<string, Status>;
const s: "active" = userStatus.alice;
console.log(s);Combinando com as const
Combine as const e satisfies para obter dados profundamente imutáveis e validados: as const os congela, e satisfies os verifica.
type Color = "red" | "blue";
const theme = {
primary: "red",
secondary: "blue"
} as const satisfies Record<string, Color>;
console.log(theme.primary);Validando Intervalos Numéricos por Tipo
Você pode restringir valores a uma união de literais numéricos para modelar conjuntos fixos de opções, validados no momento da definição.
type Level = 1 | 2 | 3;
const levels = {
easy: 1,
medium: 2,
hard: 3
} satisfies Record<string, Level>;
console.log(levels.hard);Um Mapa de Sinalizadores de Funcionalidade
Um config prático de sinalizadores de funcionalidade: as chaves são nomes de sinalizadores com preenchimento automático, e os valores são booleanos validados por satisfies.
const flags = {
newDashboard: true,
betaSearch: false
} satisfies Record<string, boolean>;
type Flag = keyof typeof flags;
const f: Flag = "betaSearch";
console.log(flags[f]);Por Que Esse Padrão Vence
Entre paletas, rotas e sinalizadores, satisfies Record<...> oferece valores validados, além de chaves e literais precisos: o ponto ideal do dia a dia para configurações tipadas.
type Color = "red" | "green" | "blue";
const ui = { brand: "green", warn: "red" } satisfies Record<string, Color>;
console.log(Object.keys(ui).join(","));Verificação Rápida: satisfies na Prática
Teste sua compreensão dos padrões práticos de satisfies.
Recapitulação: Padrões Práticos de satisfies
Você aplicou satisfies Record<string, Color> a paletas, mapas de rotas, sinalizadores e tabelas de consulta, mantendo chaves e literais exatos para o preenchimento automático enquanto valida cada valor.
type Color = "red" | "blue";
const theme = { bg: "blue", fg: "red" } satisfies Record<string, Color>;
console.log(theme.bg, theme.fg);Perguntas Frequentes
A aula “Padrões Práticos com satisfies” é grátis?
Sim — o texto completo de “Padrões Práticos com satisfies” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de TypeScript Academy, atualize para CoddyKit PRO. O curso de TypeScript Academy inclui 4 aulas no total.
O que vou aprender em “Padrões Práticos com satisfies”?
Aplique satisfies a objetos de configuração e tabelas de consulta. Você pratica TypeScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar TypeScript Academy?
Nenhuma experiência prévia é necessária. TypeScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Padrões Práticos com satisfies”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de TypeScript Academy?
Sim. Cada aula de TypeScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que satisfies Existe
- satisfies versus Anotação de Tipo
- satisfies versus Asserção as
- Padrões Práticos com satisfies