Omit<T, K>

Última atualização: 2026-10-22

Omit<T, K> Omit

Omit<T, K> descarta de T as propriedades nomeadas por K e mantém o restante como um novo tipo. Usos típicos: sanitização (remover passwordHash) ou transformar uma linha de banco de dados em resposta de API. É o espelho de Pick — quando basta descartar poucos campos, o Omit leva vantagem.

GrupoTipos Utilitários
TipoTipo
Modo strictNão necessário

ℹ️ Info O editor transpila TypeScript para JavaScript e o executa (sem verificação de tipos); veja a Saída de cada exemplo para o resultado da verificação.

📝 Sintaxe

type Omit<T, K extends string | number | symbol> =
  Pick<T, Exclude<keyof T, K>>;

// Uso
type PublicAccount = Omit<Account, "passwordHash" | "twoFA">;

⚙️ Parâmetros

TO tipo de objeto de origem de onde as propriedades são descartadas
KA união de chaves a descartar; note que K não precisa ser uma chave de T — uma chave mal escrita é silenciosamente ignorada

Retorno:Um novo tipo contendo todas as propriedades de T exceto as nomeadas por K, com tipos idênticos.

▶ Exemplo

Edite o código abaixo e clique em Testar para ver o resultado transpilado:

Saída:

{"username":"carol","email":"carol@example.com"}

(Saída de execução após a transpilação; a implementação remove os campos sensíveis via desestruturação com rest, e PublicAccount deixa de ter passwordHash no nível de tipo — um erro de digitação como Omit<Account, "passwordHash2"> manteria o campo sensível)

💡 Observações

ℹ️ Info A implementação é uma combinação: Omit<T, K> = Pick<T, Exclude<keyof T, K>> — primeiro Exclude remove K da união de chaves, depois Pick mantém o restante.
⚠️ Atenção K não é validado contra as chaves de T: Omit<Account, "passwordHashh"> (uma letra a mais) compila e mantém o campo sensível. Para sanitização sensível à segurança, prefira uma variante estrita: type StrictOmit<T, K extends keyof T> = Omit<T, K>.
💡 Dica Omit é uma lista negra: campos adicionados a Account depois aparecem automaticamente no resultado de Omit. É exatamente por isso que ele serve a cenários do tipo "expôr tudo, esconder poucos".
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Qual escolher afinal: Omit ou Pick?
R Vá pela intenção: "preciso exatamente destes" → Pick (lista branca, mais claro para poucos campos); "descartar estes" → Omit (lista negra, campos futuros da origem fluem automaticamente). Para sanitização sensível à segurança, Pick é mais seguro (chaves desconhecidas geram erro).
P Por que Omit não valida as chaves como Pick faz?
R A restrição oficial K extends string | number | symbol é deliberadamente frouxa para permitir omitir de formas não totalmente conhecidas. A frouxidão corta dos dois lados: flexível, mas um erro de digitação falha em silêncio. Um StrictOmit de uma linha restaura o rigor.
P Como remover uma propriedade de verdade em tempo de execução?
R Omit muda apenas tipos. Em tempo de execução, use desestruturação com rest: const { passwordHash, ...rest } = account; ou delete account.passwordHash (erro de compilação em propriedades obrigatórias no TS estrito). A desestruturação com rest é a abordagem recomendada.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%