TypeScript Tipos Básico
Objetos e type aliases
Em TypeScript, podemos descrever a forma de um objeto usando tipos de objeto ou type aliases. Um tipo de objeto especifica quais propriedades um objeto deve ter e seus respectivos tipos. Por exemplo, { nome: string; idade: number } define que um objeto precisa ter nome (string) e idade (number).
Podemos tornar propriedades opcionais adicionando ? após o nome: { nome: string; idade?: number }. Isso significa que a propriedade pode estar ausente ou ser undefined. Também podemos marcar propriedades como readonly, impedindo que sejam modificadas após a criação do objeto.
Para evitar repetir o mesmo tipo de objeto várias vezes, usamos type aliases com a palavra-chave type. Por exemplo, type Pessoa = { nome: string; idade?: number }. Isso cria um nome reutilizável para o tipo, deixando o código mais limpo e fácil de manter.
Neste card, vamos explorar esses conceitos com exemplos práticos e exercícios que reforçam o uso de tipos de objeto, propriedades opcionais, readonly e type.
Pontos-chave
- Tipos de objeto definem a forma esperada de um objeto, listando propriedades e seus tipos.
- Propriedades opcionais são marcadas com
?e podem estar ausentes ou serundefined. readonlyimpede a modificação de uma propriedade após a criação do objeto.typecria um alias reutilizável para qualquer tipo, incluindo tipos de objeto.- TypeScript verifica a estrutura do objeto em tempo de compilação, mas não em tempo de execução.
// Exemplo: tipos de objeto, propriedades opcionais, readonly e type alias
type Pessoa = {
readonly id: number; // readonly: não pode ser alterado depois
nome: string;
idade?: number; // opcional: pode ser omitido
email?: string;
};
function apresentar(pessoa: Pessoa): string {
const idade = pessoa.idade ?? 'não informada';
const email = pessoa.email ?? 'não informado';
return `ID: ${pessoa.id}, Nome: ${pessoa.nome}, Idade: ${idade}, Email: ${email}`;
}
const pessoa1: Pessoa = {
id: 1,
nome: 'Ana',
idade: 28
};
const pessoa2: Pessoa = {
id: 2,
nome: 'Bruno',
email: 'bruno@exemplo.com'
};
console.log(apresentar(pessoa1));
console.log(apresentar(pessoa2));
// pessoa1.id = 10; // Erro: Cannot assign to 'id' because it is a read-only property.
// pessoa2.idade = 30; // Erro: Property 'idade' does not exist on type 'Pessoa'? Não, idade existe mas é opcional.
// Na verdade, pessoa2.idade é opcional, então atribuir é permitido se o tipo for compatível.
// Vamos demonstrar um erro de compilação comentado:
// const pessoa3: Pessoa = { nome: 'Carlos' }; // Erro: Property 'id' is missing.