Aula 5 – Type Aliases, Tipagem de Objetos e Propriedades Opcionais no TypeScript

O TypeScript é uma linguagem que adiciona tipagem estática ao JavaScript. Isso significa que podemos definir, de forma explícita, o tipo de dados que uma variável, função ou objeto deve conter. Essa característica torna o código mais previsível e menos propenso a erros, já que o compilador consegue detectar inconsistências antes mesmo da execução.

Nesta aula, vamos aprofundar três conceitos fundamentais da tipagem em TypeScript: Type Aliases, Objetos Tipados e Propriedades Opcionais. Esses recursos tornam o código mais organizado, reutilizável e fácil de manter, especialmente em projetos de médio e grande porte.

BORA CODAR!!!


1. Type Aliases (Apelidos de Tipos)

Definição

Type Aliases são uma forma de criar um nome personalizado para um tipo. Em vez de repetir uma estrutura de tipo várias vezes no código, você pode dar um “apelido” a ela, facilitando a leitura e manutenção do código.

Conceito e Funcionamento

Com um Type Alias, criamos um tipo personalizado usando a palavra-chave type. Esse novo tipo pode representar valores primitivos, objetos, funções ou até uniões de tipos. O Type Alias não cria novos tipos em tempo de execução, ele apenas dá um nome a uma estrutura de tipo já existente para uso em tempo de compilação.

Objetivo e Vantagens

  • Evitar repetição de código.
  • Deixar o código mais legível.
  • Facilitar a manutenção de estruturas complexas.
  • Servir como documentação viva dentro do próprio código.

Exemplo Prático

// Criando um Type Alias para representar um usuário
type User = {
  name: string;
  age: number;
  email: string;
};

// Função que recebe um usuário e retorna uma mensagem
function greetUser(user: User): string {
  return `Olá, ${user.name}! Você tem ${user.age} anos.`;
}

// Utilizando o Type Alias
const newUser: User = {
  name: "Guilherme",
  age: 20,
  email: "guilherme@example.com"
};

console.log(greetUser(newUser));

Explicação linha a linha

  1. Criamos um tipo chamado User que define um objeto com as propriedades name, age e email.
  2. A função greetUser usa o tipo User como parâmetro, garantindo que qualquer objeto passado siga essa estrutura.
  3. O objeto newUser é criado com base no tipo User.
  4. O compilador verificará se todas as propriedades obrigatórias estão presentes e possuem o tipo correto.
  5. Ao executar, a função imprime a mensagem utilizando os dados do objeto.

2. Tipagem de Objetos

Definição e Conceito

A tipagem de objetos permite que você defina quais propriedades um objeto deve ter e qual é o tipo de cada uma delas. Isso garante que, ao longo do desenvolvimento, o objeto seja usado corretamente, sem adição ou omissão de propriedades inesperadas.

Declaração e Utilização

Podemos definir a tipagem de objetos diretamente em uma variável, função ou dentro de um Type Alias. Essa definição é essencial quando trabalhamos com dados estruturados.

Objetivo da Tipagem de Objetos

  • Garantir consistência dos dados.
  • Evitar erros de propriedades ausentes ou tipos incorretos.
  • Melhorar a autocompletação e o feedback do editor.

Exemplo Prático

// Definindo o tipo do objeto diretamente
let product: { id: number; name: string; price: number } = {
  id: 1,
  name: "Notebook",
  price: 4500
};

// Função que utiliza um objeto tipado
function showProductInfo(product: { id: number; name: string; price: number }): string {
  return `Produto: ${product.name} | Preço: R$${product.price}`;
}

console.log(showProductInfo(product));

Explicação linha a linha

  1. Declaramos a variável product e definimos seu tipo entre chaves, especificando o tipo de cada propriedade.
  2. Criamos uma função showProductInfo que também utiliza um objeto com tipagem explícita no parâmetro.
  3. A função retorna uma string formatada com as informações do produto.
  4. O compilador verifica se o objeto passado na chamada contém todas as propriedades exigidas e se os tipos estão corretos.

3. Propriedades e Parâmetros Opcionais

Definição

Em TypeScript, podemos marcar propriedades ou parâmetros como opcionais usando o operador ?. Isso indica que a presença daquele dado não é obrigatória.

Quando e Por Que Usar

Propriedades e parâmetros opcionais são úteis quando uma função ou objeto pode ser utilizado de diferentes formas, ou quando certas informações nem sempre estão disponíveis no momento da criação do objeto.

Como isso ajuda no dia a dia

Esse recurso torna o código mais flexível e dinâmico, reduzindo a necessidade de criar múltiplas variações da mesma função ou tipo apenas para lidar com a ausência de valores.

Exemplo Prático com Objetos

type Employee = {
  name: string;
  department?: string; // propriedade opcional
};

const employee1: Employee = { name: "Julia" };
const employee2: Employee = { name: "Carlos", department: "Financeiro" };

console.log(employee1);
console.log(employee2);

Explicação

  1. Criamos um tipo Employee com a propriedade department marcada como opcional.
  2. O objeto employee1 é válido mesmo sem o campo department.
  3. O objeto employee2 também é válido, pois inclui o campo opcional.
  4. O TypeScript não gera erro em nenhum dos dois casos.

Exemplo Prático com Funções

function sendMessage(message: string, recipient?: string): void {
  if (recipient) {
    console.log(`Enviando mensagem para ${recipient}: ${message}`);
  } else {
    console.log(`Mensagem padrão: ${message}`);
  }
}

sendMessage("Olá, tudo bem?");
sendMessage("Oi, Guilherme!", "Guilherme");

Explicação

  1. O parâmetro recipient é opcional, indicado pelo ?.
  2. Dentro da função, verificamos se ele foi informado antes de usá-lo.
  3. Isso permite usar a mesma função tanto com um destinatário quanto sem ele.

Conclusão

Nesta aula, aprendemos como o TypeScript nos permite estruturar melhor o código e torná-lo mais confiável por meio da tipagem. Os Type Aliases mostraram como é possível criar nomes personalizados para tipos, simplificando a leitura e evitando repetição. A tipagem de objetos reforçou a importância de definir claramente as propriedades e seus tipos, garantindo segurança e clareza no desenvolvimento. Já as propriedades e parâmetros opcionais demonstraram como o TypeScript oferece flexibilidade sem perder o controle sobre os dados.

Esses conceitos são fundamentais para quem está começando com a linguagem, pois representam a base da tipagem estática aplicada a situações reais do dia a dia de um desenvolvedor. Ao dominar esses recursos, é possível escrever código mais limpo, previsível e fácil de manter, aproveitando o melhor que o TypeScript oferece para o desenvolvimento moderno em JavaScript tipado.

🔗 Repositório Github: https://github.com/guilherme-silvam/TS-aulas-guilhermemachadodev/tree/main/typescript-aula-5

Publicar comentário