Objetos TypeScript simplificados para iniciantes

Objetos são uma parte fundamental do JavaScript e do TypeScript. Eles permitem que você agrupe dados e funções relacionados, fornecendo uma maneira de modelar entidades do mundo real em seu código. O TypeScript aprimora objetos JavaScript com segurança de tipo, tornando seu código mais previsível e fácil de manter. Este guia simplificará o conceito de objetos TypeScript para iniciantes.

O que é um objeto no TypeScript?

Um object é uma coleção de pares chave-valor, onde chaves são strings (ou símbolos) e valores podem ser de qualquer tipo. No TypeScript, você pode definir a forma de um objeto usando tipos ou interfaces, garantindo que o objeto siga uma estrutura específica.

Definindo objetos simples em TypeScript

Vamos começar definindo um objeto simples em TypeScript. Isso é similar a como você define objetos em JavaScript, mas com o benefício adicional de segurança de tipo.

Exemplo de objeto básico

Veja como definir um objeto simples em TypeScript:

const person: { name: string; age: number } = {
  name: "Alice",
  age: 25
};

console.log(person.name); // Output: Alice
console.log(person.age);  // Output: 25

Neste exemplo, o objeto person tem duas propriedades: name (do tipo string) e age (do tipo number). O TypeScript garantirá que o objeto obedeça a essa estrutura.

Usando interfaces para definir a estrutura do objeto

Uma interface é um recurso poderoso no TypeScript que define o formato de um objeto. Interfaces fornecem uma maneira de definir contratos dentro do seu código, garantindo que os objetos sigam uma estrutura específica.

Definindo uma Interface

Veja como usar uma interface para definir a estrutura de um objeto:

interface Person {
  name: string;
  age: number;
}

const person: Person = {
  name: "Bob",
  age: 30
};

console.log(person.name); // Output: Bob
console.log(person.age);  // Output: 30

Neste exemplo, a interface Person define a estrutura de um objeto person. A variável person deve aderir a essa estrutura, ou o TypeScript lançará um erro.

Propriedades opcionais em objetos

O TypeScript permite que você defina propriedades opcionais em objetos usando o símbolo ?. Propriedades opcionais podem ser omitidas ao criar objetos, fornecendo flexibilidade em como você define estruturas de objetos.

Exemplo com propriedades opcionais

Aqui está um exemplo em que a propriedade phoneNumber é opcional:

interface Employee {
  name: string;
  age: number;
  phoneNumber?: string; // Optional property
}

const employee1: Employee = {
  name: "John",
  age: 28
};

const employee2: Employee = {
  name: "Doe",
  age: 32,
  phoneNumber: "123-456-7890"
};

console.log(employee1.phoneNumber); // Output: undefined
console.log(employee2.phoneNumber); // Output: 123-456-7890

Neste exemplo, employee1 não tem uma propriedade phoneNumber, enquanto employee2 tem. Ambos são válidos de acordo com a interface Employee.

Propriedades somente leitura em objetos

O TypeScript permite que você torne as propriedades readonly, evitando que elas sejam modificadas após o objeto ser criado. Isso é útil para criar objetos imutáveis.

Exemplo com propriedades somente leitura

Veja como definir propriedades somente leitura:

interface Car {
  readonly brand: string;
  model: string;
}

const car: Car = {
  brand: "Toyota",
  model: "Camry"
};

// car.brand = "Honda"; // Error: Cannot assign to 'brand' because it is a read-only property

car.model = "Corolla"; // Valid
console.log(car.model); // Output: Corolla

Neste exemplo, a propriedade brand é marcada como readonly. Qualquer tentativa de modificá-la resultará em um erro de tempo de compilação.

Objetos aninhados em TypeScript

Objetos TypeScript podem ser aninhados, o que significa que um objeto pode conter outro objeto como uma propriedade. Isso é comum em estruturas de dados complexas.

Exemplo de objetos aninhados

Aqui está um exemplo de um objeto aninhado:

interface Address {
  street: string;
  city: string;
  zipCode: string;
}

interface User {
  name: string;
  age: number;
  address: Address; // Nested object
}

const user: User = {
  name: "Emily",
  age: 27,
  address: {
    street: "123 Main St",
    city: "New York",
    zipCode: "10001"
  }
};

console.log(user.address.city); // Output: New York

Neste exemplo, a interface User tem um objeto Address aninhado. O objeto user segue esta estrutura, permitindo acesso a propriedades aninhadas.

Conclusão

Objetos em TypeScript são mais poderosos e flexíveis do que objetos JavaScript simples devido a definições de tipo, propriedades opcionais, propriedades somente leitura e estruturas aninhadas. Ao definir objetos usando interfaces, você pode criar um código mais robusto e sem erros. Comece a usar objetos TypeScript em seus projetos para aproveitar todo o poder da segurança de tipo e dados estruturados.