FS

Como melhorar o desempenho com o método PICK do TypeScript

Imagem do post Como melhorar o desempenho com o método PICK do TypeScript

Reduza consumo de memória e aprimore o desempenho das suas aplicações com uma pequena alteração

Quando trabalhamos com grandes conjuntos de dados, é essencial evitar carregar informações desnecessárias. No TypeScript, o método <Pick> nos ajuda a selecionar apenas as propriedades que realmente precisamos de um tipo, economizando memória e processamento.

Exemplo:

Imagine que temos um objeto User com várias propriedades:

type User = {
 id: number;
 name: string;
 email: string;
 age: number;
 address: string;
 phone: string;
};

Se o nosso componente só precisa do name e do email, não faz sentido carregar todas as outras propriedades. Com <Pick>, podemos criar um novo tipo contendo apenas o que precisamos:

type UserPreview = Pick<User, "name" | "email">;

const user: UserPreview = {
 name: "Alice",
 email: "alice@example.com"
};

Isso reduz o consumo de memória e torna o código mais eficiente. Quanto menos dados forem processados, melhor será a performance do nosso aplicativo.

Mas, realmente vai gerar toda essa diferença na minha aplicação usar o Pick?

Sim, usar sempre todos os dados de um grande objeto em toda a aplicação pode afetar significativamente a memória e o desempenho. Aqui estão as principais consequências:

1. Maior consumo de memória

Cada variável armazenada na memória ocupa espaço. Se carregamos objetos enormes em várias partes da aplicação sem necessidade, estamos ocupando mais memória do que o necessário. Isso pode levar a:

  • Uso excessivo da RAM do dispositivo, especialmente em aplicações que manipulam muitos dados (como dashboards ou sistemas com grandes listas de usuários).

2. Desempenho reduzido no carregamento de dados

Se uma API retorna um grande objeto e passamos ele inteiro para vários componentes, estamos movimentando mais dados do que o necessário. Isso gera:

  • Maior tempo de transferência de dados na rede (principalmente em conexões lentas).
  • Mais tempo de processamento para filtrar informações dentro dos componentes.

Por exemplo, imagine que temos uma API que retorna isso:

{
  "id": 1,
  "name": "Alice",
  "email": "alice@example.com",
  "age": 30,
  "address": "123 Main St",
  "phone": "123-456-7890",
  "bio": "Software developer...",
  "profileImage": "https://example.com/image.jpg",
  "socialLinks": { "twitter": "@alice", "github": "alice-dev" }
}

Se um componente só precisa do name e do email, não faz sentido repassar esse objeto completo para ele.

3. Renderizações desnecessárias no React

No React, quando um estado ou uma propriedade muda, o componente que a recebe re-renderiza. Se passamos objetos grandes como props, mesmo que só uma pequena parte seja usada, podemos causar renderizações desnecessárias. Isso pode levar a:

  • Travamentos em dispositivos mais fracos.
  • Refluxo no layout (quando elementos piscam ou se movem na interface).
  • Aplicação ficando menos responsiva.

4. Dificuldade na manutenção do código

Se toda a aplicação recebe e trabalha com objetos gigantes, fica mais difícil entender quais partes do código realmente precisam de determinados dados. Isso pode gerar:

  • Maior complexidade no debugging.
  • Código mais difícil de escalar e refatorar.

Conclusão

Sempre que possível, devemos trabalhar com dados reduzidos e otimizados. O TypeScript nos ajuda com utilitários como <Pick> para definir exatamente quais propriedades são necessárias em cada contexto. Isso torna nossa aplicação mais eficiente, rápida e fácil de manter. 🚀

Pequenas otimizações como essa fazem grande diferença!

Post criado/atualizado em: 26/03/2025

Felipe Santiago

Autor: Felipe Santiago

Trabalho com desenvolvimento web Frontend desde 2023 com foco em React e Typescript. TailwindCSS foi uma reviravolta em meus projetos, não consigo mais ficar sem ele. Evoluindo para aplicações FullStack, foquei muito para criação de APIs com Node e Fastify/Express e manutenção de banco de dados como PostgreSQL.