Aparência
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.