Các lớp và phương thức trừu tượng của TypeScript

Trong TypeScript, lớp trừu tượng là một loại lớp đặc biệt không thể khởi tạo trực tiếp. Nó đóng vai trò là bản thiết kế cho các lớp khác. Các lớp trừu tượng được sử dụng để định nghĩa các hành vi chung có thể được chia sẻ bởi nhiều lớp con, đồng thời cho phép các lớp con đó cung cấp các triển khai cụ thể.

Định nghĩa một lớp trừu tượng trong TypeScript

Một lớp trừu tượng được khai báo với từ khóa abstract. Nó có thể chứa cả phương thức trừu tượng, không có triển khai và phải được triển khai bởi các lớp con, và phương thức thông thường, có triển khai. Sau đây là ví dụ về lớp trừu tượng:

abstract class Animal {
  abstract makeSound(): void; // Abstract method, no implementation

  move(): void {
    console.log("Moving...");
  }
}

Hiểu về các phương pháp trừu tượng

Abstract methods ​​là các phương thức được khai báo trong một lớp trừu tượng không có triển khai trong lớp cơ sở. Các phương thức này phải được triển khai trong bất kỳ lớp con nào kế thừa từ lớp trừu tượng. Abstract methods đảm bảo rằng mỗi lớp con cung cấp hành vi cụ thể của riêng nó cho phương thức. Dưới đây là một ví dụ:

class Dog extends Animal {
  makeSound(): void {
    console.log("Woof! Woof!");
  }
}

const myDog = new Dog();
myDog.makeSound(); // Outputs: Woof! Woof!
myDog.move(); // Outputs: Moving...

Lợi ích của việc sử dụng lớp trừu tượng

Các lớp trừu tượng mang lại một số lợi thế:

  • Khả năng tái sử dụng mã: Các phương thức và thuộc tính chung có thể được định nghĩa một lần và chia sẻ trên nhiều lớp con.
  • Đóng gói: Các lớp trừu tượng có thể đóng gói hành vi cần ẩn khỏi mã bên ngoài.
  • Đa hình: Các lớp trừu tượng cho phép hành vi đa hình, cho phép một hàm duy nhất xử lý các loại đối tượng khác nhau.

Khi nào nên sử dụng lớp trừu tượng?

Các lớp trừu tượng là lý tưởng khi cần định nghĩa một giao diện chung cho một nhóm các lớp liên quan trong khi vẫn cho phép linh hoạt trong cách các lớp này triển khai giao diện. Ví dụ, trong một dự án liên quan đến các loại động vật khác nhau, một lớp trừu tượng Animal có thể được sử dụng để định nghĩa cấu trúc và hành vi chung cho tất cả các loài động vật, đồng thời cho phép mỗi lớp động vật cụ thể triển khai các hành vi riêng của nó.

Lớp trừu tượng so với Giao diện

Mặc dù cả lớp trừu tượng và giao diện đều xác định các hợp đồng mà các lớp khác phải tuân theo, nhưng vẫn có những khác biệt chính:

  • Abstract Classes: Có thể có cả phương thức trừu tượng và phương thức cụ thể (phương thức có triển khai). Chúng phù hợp hơn với các tình huống mà các lớp con chia sẻ một lượng lớn mã.
  • Giao diện: Chỉ khai báo chữ ký phương thức và không cung cấp bất kỳ triển khai nào. Chúng lý tưởng để định nghĩa hợp đồng mà nhiều lớp có thể triển khai theo cách riêng của chúng.

Phần kết luận

Các lớp trừu tượng và phương thức TypeScript cung cấp một cơ chế mạnh mẽ để xác định hành vi được chia sẻ trong khi vẫn cho phép linh hoạt trong quá trình triển khai. Bằng cách sử dụng các lớp trừu tượng, các nhà phát triển có thể tạo ra một cơ sở mã mạnh mẽ và có thể bảo trì, thúc đẩy việc tái sử dụng mã, đóng gói và đa hình. Biết khi nào nên sử dụng các lớp trừu tượng so với các giao diện là rất quan trọng để xây dựng các ứng dụng có thể mở rộng và có cấu trúc tốt.