Partial<T> Partial (com Required)

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

Partial<T> Partial (com Required)

Partial<T> torna todas as propriedades de T opcionais: perfeito para "atualizações parciais" (rascunhos de formulários, endpoints de patch) — sem necessidade de escrever à mão um novo tipo só para alterar dois campos. É o espelho de Required<T>.

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 Partial<T> = {
  [K in keyof T]?: T[K];
};

// Uso
function applyPatch(user: UserProfile, patch: Partial<UserProfile>): UserProfile;

⚙️ Parâmetros

TO tipo de objeto a transformar; cada propriedade K e seu tipo T[K] são percorridos pelo tipo mapeado

Retorno:Um novo tipo com as mesmas propriedades de T, mas todas opcionais (?).

▶ Exemplo

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

Saída:

{"id":1,"name":"Diana","email":"d@example.com","age":22}

(Saída de execução após a transpilação; o patch passa apenas age, os demais campos mantêm seus valores)

💡 Observações

ℹ️ Info A implementação é um tipo mapeado: [K in keyof T]?: T[K] — percorre cada chave de T e adiciona o marcador ? (a lição 19, "implementação de tipos utilitários", deriva isso por completo).
⚠️ Atenção Partial é raso: os tipos das propriedades aninhadas não se tornam opcionais recursivamente; para opcionalidade profunda, escreva o seu próprio DeepPartial (tipo mapeado recursivo).
💡 Dica Partial é o espelho de Required (adicionar vs remover ?); combine com Pick/Omit para tipos de patch precisos que só permitem alterar campos específicos.
Mais casos em breve.

📚 Tutoriais relacionados

❓ Perguntas frequentes

P Qual é a diferença entre Partial e escrever ? à mão em cada propriedade?
R O efeito é o mesmo, mas Partial acompanha o tipo de origem automaticamente: adicione um campo a UserProfile e Partial<UserProfile> o incorpora; uma cópia escrita à mão diverge silenciosamente.
P As propriedades aninhadas também se tornam opcionais?
R Não. Partial é raso — apenas as propriedades do primeiro nível recebem ?; address: {city: string} como um todo se torna opcional, mas city permanece obrigatório. Escreva DeepPartial para necessidades profundas.
P Depois de Partial, posso atribuir undefined a campos obrigatórios?
R Omitir campos sempre é permitido; atribuir undefined explicitamente depende de strictNullChecks: no modo estrito, os campos de Partial são T[K] | undefined. Mantenha o modo estrito ativo.
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%