Classes trong TypeScript là một phần quan trọng của lập trình hướng đối tượng, cho phép bạn tạo ra các đối tượng với cấu trúc và hành vi cụ thể. TypeScript mở rộng JavaScript bằng cách cung cấp các tính năng như kiểu dữ liệu tĩnh, tính kế thừa, và các phương thức, giúp bạn xây dựng các ứng dụng dễ bảo trì và mở rộng hơn.

Bài viết này là một phần của chuỗi học TypeScript trên "codetuthub.com", cùng với các bài học khác như TypeScript Simple Types, TypeScript Functions, và TypeScript Enums.

1. Định nghĩa class

Một class trong TypeScript được định nghĩa bằng từ khóa class, theo sau là tên class và thân class chứa các thuộc tính và phương thức.

Ví dụ

ts
class Animal {
    name: string;

    constructor(name: string) {
        this.name = name;
    }

    speak(): void {
        console.log(`${this.name} makes a noise.`);
    }
}

Trong ví dụ này, Animal là một class có một thuộc tính name và một phương thức speak.

2. Khởi tạo đối tượng

Bạn có thể tạo một đối tượng từ một class bằng cách sử dụng từ khóa new.

Ví dụ

ts
const dog = new Animal("Rex");
dog.speak(); // Kết quả: "Rex makes a noise."

3. Kế thừa (Inheritance)

TypeScript hỗ trợ kế thừa, cho phép bạn tạo ra một class mới dựa trên một class có sẵn. Class con sẽ kế thừa tất cả các thuộc tính và phương thức từ class cha.

Ví dụ

ts
class Dog extends Animal {
    speak(): void {
        console.log(`${this.name} barks.`);
    }
}

const dog = new Dog("Rex");
dog.speak(); // Kết quả: "Rex barks."

4. Các tính năng của class

4.1 Tính kế thừa

Kế thừa cho phép một class mới mở rộng tính năng của một class hiện có.

4.2 Tính đóng gói

Bạn có thể sử dụng các modifier như public, private, và protected để kiểm soát quyền truy cập vào các thuộc tính và phương thức.

  • public: Có thể truy cập từ bên ngoài class.
  • private: Chỉ có thể truy cập từ bên trong class.
  • protected: Chỉ có thể truy cập từ class và các class kế thừa.

Ví dụ

ts
class Animal {
    protected name: string;

    constructor(name: string) {
        this.name = name;
    }
}

class Dog extends Animal {
    constructor(name: string) {
        super(name);
    }

    getName(): string {
        return this.name; // Hợp lệ, vì name là protected
    }
}

const dog = new Dog("Rex");
console.log(dog.getName()); // Kết quả: "Rex"

5. Các phương thức tĩnh (Static Methods)

Phương thức tĩnh được gọi trực tiếp từ class mà không cần tạo một đối tượng. Bạn có thể sử dụng từ khóa static để định nghĩa một phương thức tĩnh.

Ví dụ

ts
class MathUtil {
    static add(a: number, b: number): number {
        return a + b;
    }
}

console.log(MathUtil.add(5, 10)); // Kết quả: 15

6. Kết luận

Classes trong TypeScript là một công cụ mạnh mẽ giúp bạn tổ chức mã nguồn theo cách hướng đối tượng, cho phép tái sử dụng và bảo trì mã hiệu quả hơn. Việc sử dụng các tính năng như kế thừa, đóng gói, và các phương thức tĩnh giúp tăng cường khả năng kiểm soát và rõ ràng trong mã nguồn. Để tìm hiểu thêm về TypeScript, hãy tham khảo các bài học liên quan trên "codetuthub.com" như TypeScript Simple Types, TypeScript Functions, và TypeScript Enums.