Kế thừa và giao diện là hai khái niệm quan trọng trong TypeScript
, và chúng có vai trò quan trọng trong việc phát triển ứng dụng. Dưới đây là một cuộc thảo luận về khái niệm này và cách sử dụng và lợi ích của chúng trong việc phát triển ứng dụng:
Kế thừa
Kế thừa trong TypeScript
cho phép một lớp con (subclass) kế thừa các thuộc tính và phương thức từ một lớp cha (superclass). Lớp con có thể mở rộng và mở rộng các tính năng có sẵn trong lớp cha.
Để sử dụng kế thừa, chúng ta sử dụng từ khóa extends
để khai báo lớp con kế thừa từ lớp cha.
Ví dụ:
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
eat() {
console.log(this.name + " is eating.");
}
}
class Dog extends Animal {
bark() {
console.log(this.name + " is barking.");
}
}
const dog = new Dog("Buddy");
dog.eat(); // Output: "Buddy is eating."
dog.bark(); // Output: "Buddy is barking."
Trong ví dụ trên, lớp Dog
kế thừa từ lớp Animal
và mở rộng bằng cách thêm phương thức bark()
. Lớp Dog
có thể sử dụng phương thức eat()
kế thừa từ lớp Animal
.
Giao diện
Giao diện trong TypeScript định nghĩa một tập hợp các thuộc tính và phương thức mà một đối tượng phải tuân thủ. Nó xác định giao diện cho các đối tượng mà có thể có các tính năng chung.
Để sử dụng giao diện, chúng ta sử dụng từ khóa interface
để khai báo giao diện.
Ví dụ:
interface Shape {
calculateArea(): number;
}
class Circle implements Shape {
radius: number;
constructor(radius: number) {
this.radius = radius;
}
calculateArea() {
return Math.PI * this.radius * this.radius;
}
}
const circle = new Circle(5);
console.log(circle.calculateArea()); // Output: 78.53981633974483
Trong ví dụ trên, giao diện Shape
định nghĩa một phương thức calculateArea()
mà mọi đối tượng phải tuân thủ. Lớp Circle
implements (thực hiện) giao diện Shape
và cung cấp triển khai cho phương thức calculateArea()
.
Lợi ích của kế thừa và giao diện trong việc phát triển ứng dụng
- Kế thừa giúp tái sử dụng mã nguồn và giảm sự lặp lại. Khi một lớp con kế thừa từ một lớp cha, nó có thể sử dụng lại các thuộc tính và phương thức đã được triển khai trong lớp cha.
- Giao diện giúp xác định các hợp đồng (contracts) và tuân thủ giao diện, đảm bảo rằng các đối tượng đáp ứng các yêu cầu cần thiết. Nó tạo ra một cấu trúc chung cho việc phát triển và sử dụng các đối tượng.
- Cả kế thừa và giao diện giúp tăng tính linh hoạt trong thiết kế và phát triển ứng dụng, cho phép sử dụng các khái niệm như đa hình (polymorphism) và tái sử dụng mã nguồn.
Tóm lại, kế thừa và giao diện là hai khái niệm quan trọng trong TypeScript. Kế thừa cho phép một lớp con kế thừa các tính năng từ một lớp cha, trong khi giao diện định nghĩa các yêu cầu mà đối tượng phải tuân thủ. Cả hai khái niệm này đóng vai trò quan trọng trong việc phát triển ứng dụng bằng TypeScript.