Aula 02 - Tipos Fundamentais e Inferência 🛠️
Objetivo
Nesta aula, exploraremos os pilares da tipagem no TypeScript: os tipos primitivos, as estruturas de dados básicas e o poderoso sistema de inferência que torna o código limpo e seguro ao mesmo tempo.
1. Tipos Primitivos 🧱
O TypeScript herda os tipos primitivos do JavaScript, mas permite que você os declare explicitamente.
| Tipo | Descrição | Exemplo |
|---|---|---|
string |
Textos | "Olá mundo" |
number |
Números (inteiros e decimais) | 42 ou 3.14 |
boolean |
Valores lógicos | true ou false |
Exemplo de Declaração
2. Arrays e Tuplas 📊
Arrays
Existem duas formas de declarar arrays:
Tuplas
As Tuplas permitem declarar um array com um número fixo de elementos e tipos conhecidos em posições específicas.
let pessoa: [string, number];
pessoa = ["Ricardo", 30]; // ✅ Correto
// pessoa = [30, "Ricardo"]; // ❌ Erro: Tipos na ordem errada
3. Enum, Any e Unknown 🎭
Enum
Permite definir um conjunto de constantes nomeadas, facilitando a legibilidade.
Any vs Unknown
Atenção
O tipo any desativa a checagem de tipos. Use apenas em casos extremos de migração de código.
any: Aceita qualquer coisa e permite qualquer operação.unknown: Aceita qualquer coisa, mas obriga você a verificar o tipo antes de usar (mais seguro).
4. Void e Never 🚫
void: Usado em funções que não retornam nenhum valor.never: Usado em funções que nunca terminam (como loops infinitos) ou que sempre lançam exceções.
function avisar(): void {
console.log("Aviso enviado!");
}
function erroFatal(msg: string): never {
throw new Error(msg);
}
5. Inferência de Tipos 🧠
O TypeScript é inteligente o suficiente para entender o tipo de uma variável sem que você precise escrever.
let curso = "TypeScript"; // O TS infere automaticamente que 'curso' é string
// curso = 10; // ❌ Erro: Não posso atribuir número a uma string
6. Strict Mode: O Coração da Qualidade 🛡️
Como vimos na Aula 1, o tsconfig.json possui o strict mode. Ele força o desenvolvedor a lidar com valores null e undefined, evitando os famosos erros de "quebra" em produção.
Visualizando a Hierarquia de Tipos (Mermaid)
graph TD;
Top[unknown / any] --> Prim[Primitivos];
Prim --> string;
Prim --> number;
Prim --> boolean;
Top --> Obj[Arrays / Objetos / Tuplas];
Obj --> Void[void];
Void --> Never[never];
7. Exercícios Práticos 📝
- Básico: Crie uma variável para cada tipo primitivo e atribua valores coerentes.
- Básico: Crie um array de strings e uma tupla contendo o nome e a versão de um software.
- Intermediário: Crie um
enumpara representar os dias da semana. - Intermediário: Crie uma função que receba um parâmetro
unknowne use otypeofpara imprimir se é uma string ou número. - Desafio: Tente criar uma função que retorne
nevere explique em qual cenário do mundo real ela seria útil.
🚀 Mini-Projeto da Aula
Crie um pequeno script de "Gerenciamento de Inventário" onde cada item é uma tupla [id: number, nome: string, preco: number, emEstoque: boolean]. Use um enum para as categorias dos itens.
Próxima Aula: Vamos aprender sobre Tipos Avançados como Union Types e Type Guards!