Skip to content

Introdução a Classes

As classes são um pilar fundamental na programação orientada a objetos (OOP) e são amplamente utilizadas para criar objetos e gerenciar suas interações. Em TypeScript, as classes oferecem uma estrutura clara e concisa para definir e instanciar objetos com propriedades e métodos, além de adicionar tipagem estática para garantir a segurança do tipo durante o desenvolvimento.

Definindo e Instanciando Classes

Definição de uma Classe:

Em TypeScript, você define uma classe usando a palavra-chave class. Dentro da classe, você pode declarar propriedades e métodos. Aqui está um exemplo básico de uma classe Person:

typescript
class Person {
  // Propriedades
  name: string;
  age: number;

  // Construtor
  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  // Método
  greet(): void {
    console.log(
      `Hello, my name is ${this.name} and I am ${this.age} years old.`
    );
  }
}

Neste exemplo, Person tem duas propriedades (name e age) e um método (greet). O construtor da classe é um método especial que é chamado quando uma nova instância da classe é criada, e é usado para inicializar as propriedades da classe.

Instanciando uma Classe:

Para criar uma instância de uma classe, você usa a palavra-chave new seguida do nome da classe e quaisquer argumentos necessários para o construtor:

typescript
const person1 = new Person("Alice", 30);
person1.greet(); // Saída: Hello, my name is Alice and I am 30 years old.

Neste exemplo, person1 é uma instância da classe Person, e o método greet é chamado nessa instância.

Propriedades e Métodos

Propriedades:

As propriedades são variáveis associadas a uma classe e representam os dados ou o estado da classe. Em TypeScript, você pode definir o tipo de uma propriedade diretamente na declaração da classe:

typescript
class Car {
  brand: string;
  model: string;
  year: number;

  constructor(brand: string, model: string, year: number) {
    this.brand = brand;
    this.model = model;
    this.year = year;
  }
}

Aqui, Car tem três propriedades (brand, model e year), cada uma com um tipo especificado.

Métodos:

Os métodos são funções associadas a uma classe que podem operar nas propriedades da classe e realizar ações. Métodos são definidos dentro da classe e podem acessar as propriedades da classe usando this:

typescript
class Car {
  brand: string;
  model: string;
  year: number;

  constructor(brand: string, model: string, year: number) {
    this.brand = brand;
    this.model = model;
    this.year = year;
  }

  // Método
  displayInfo(): void {
    console.log(`This car is a ${this.year} ${this.brand} ${this.model}.`);
  }
}

const car1 = new Car("Toyota", "Corolla", 2020);
car1.displayInfo(); // Saída: This car is a 2020 Toyota Corolla.

Modificadores de Acesso:

Em TypeScript, você pode controlar a visibilidade das propriedades e métodos usando modificadores de acesso:

  • public: Propriedades e métodos são acessíveis de qualquer lugar.
  • private: Propriedades e métodos são acessíveis apenas dentro da classe.
  • protected: Propriedades e métodos são acessíveis dentro da classe e subclasses.

Exemplo com modificadores de acesso:

typescript
class Employee {
  private id: number;
  public name: string;
  protected department: string;

  constructor(id: number, name: string, department: string) {
    this.id = id;
    this.name = name;
    this.department = department;
  }

  public getDetails(): string {
    return `${this.name} works in ${this.department} department.`;
  }
}

const emp1 = new Employee(1, "John Doe", "HR");
console.log(emp1.getDetails()); // Saída: John Doe works in HR department.
// console.log(emp1.id);  // Erro: Propriedade 'id' é privada e só é acessível dentro da classe 'Employee'.

Neste exemplo, id é privado e não pode ser acessado fora da classe Employee, name é público e acessível de qualquer lugar, e department é protegido, acessível apenas dentro da classe e suas subclasses.

Conclusão

Classes em TypeScript proporcionam uma maneira poderosa e flexível de definir e trabalhar com objetos, aproveitando a tipagem estática para maior segurança e robustez do código. Compreender como definir, instanciar e utilizar propriedades e métodos é essencial para tirar o máximo proveito da programação orientada a objetos em TypeScript.