devterview_$ iniciar simulação

Tipos utilitários e o valor de derivar tipos

FácilJúniorSistema de tipos

Pergunta

O que fazem `Partial`, `Pick`, `Omit`, `Record` e `ReturnType`, e por que derivar tipos é melhor que redigitá-los?

Resposta esperada

`Partial<T>` torna todas as propriedades opcionais (ex: um patch de update). `Pick<T, K>` cria um tipo só com as chaves `K` de `T`; `Omit<T, K>` o inverso. `Record<K, V>` é um objeto com chaves `K` e valores `V` (`Record<string, Usuario>`). `ReturnType<typeof fn>` extrai o tipo que uma função retorna. O valor de derivar: se você redigita a forma de um objeto em três lugares, eles divergem na primeira mudança e o bug aparece longe da causa. Derivando (`type UsuarioResumo = Pick<Usuario, 'id' | 'nome'>`, `type Resposta = ReturnType<typeof handler>`), existe uma única fonte da verdade — mudou o original, os derivados acompanham ou o compilador aponta o que quebrou.

Por que perguntam isso

Pergunta pleno de TS. O ponto que importa é o 'porquê' (fonte única da verdade), não decorar a lista de utilitários.

#utility-types#partial#pick#omit#derivar-tipos
publicidade

Relacionadas