Sử dụng từ khóa abstract trong TypeScript mang lại nhiều lợi ích, từ việc tạo ra các lớp cơ sở không thể khởi tạo đến việc đảm bảo tính nhất quán và khả năng mở rộng trong mã nguồn. Từ khóa này cho phép bạn xây dựng các ứng dụng phức tạp theo mô hình lập trình hướng đối tượng một cách dễ dàng và hiệu quả hơn, đồng thời cải thiện khả năng bảo trì mã nguồn.

Dưới đây là các lý do chính tại sao chúng ta cần sử dụng từ khóa abstract cho các lớp và phương thức.

1. Định nghĩa các lớp cơ sở không thể khởi tạo

Khi bạn đánh dấu một lớp là abstract, điều này có nghĩa là lớp đó không thể được khởi tạo trực tiếp. Điều này rất hữu ích khi bạn muốn định nghĩa một lớp cơ sở mà không có ý định sử dụng nó để tạo đối tượng trực tiếp. Thay vào đó, bạn chỉ muốn lớp đó được sử dụng như một lớp cơ sở cho các lớp khác.

abstract class Shape {
    abstract area(): number; // Phương thức trừu tượng
}

class Circle extends Shape {
    constructor(private radius: number) {
        super();
    }

    area(): number {
        return Math.PI * this.radius ** 2;
    }
}

2. Tạo ra các phương thức trừu tượng

Phương thức trừu tượng được định nghĩa trong các lớp trừu tượng nhưng không có thân hàm. Điều này buộc các lớp con phải thực hiện các phương thức này, đảm bảo rằng tất cả các lớp con đều có một phương thức cụ thể với cùng một tên và kiểu trả về.

abstract class Animal {
    abstract makeSound(): void; // Phương thức trừu tượng

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

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

3. Đảm bảo tính nhất quán trong thiết kế

Bằng cách sử dụng từ khóa abstract, bạn có thể đảm bảo rằng tất cả các lớp con đều thực hiện các phương thức nhất định. Điều này giúp duy trì tính nhất quán trong mã nguồn và giảm thiểu khả năng phát sinh lỗi.

4. Tăng cường khả năng mở rộng

Lớp trừu tượng có thể dễ dàng được mở rộng trong tương lai. Khi bạn cần thêm các lớp mới hoặc thay đổi cấu trúc, bạn có thể tạo các lớp con mới mà không cần thay đổi lớp cơ sở. Điều này giúp cho mã của bạn trở nên linh hoạt và dễ bảo trì hơn.

5. Tạo ra các giao diện rõ ràng

Sử dụng lớp trừu tượng giúp tạo ra một giao diện rõ ràng cho các lớp con. Khi một lập trình viên khác nhìn vào lớp trừu tượng, họ sẽ biết ngay rằng họ cần phải cung cấp các phương thức cụ thể nào. Điều này giúp cho việc hiểu và sử dụng mã trở nên dễ dàng hơn.

6. Hỗ trợ cho các mô hình thiết kế

Nhiều mô hình thiết kế, chẳng hạn như Factory hoặc Strategy, dựa trên việc sử dụng lớp trừu tượng. Sử dụng từ khóa abstract giúp bạn áp dụng các mô hình thiết kế này một cách hiệu quả hơn trong ứng dụng của mình.