Trong TypeScript, bạn có thể gọi hàm constructor của lớp cơ sở từ lớp con bằng cách sử dụng từ khóa super()
. Từ khóa này cho phép bạn khởi tạo các thuộc tính hoặc thực hiện các tác vụ cần thiết trong constructor của lớp cơ sở trước khi thực hiện bất kỳ logic nào trong constructor của lớp con.
Dưới đây là hướng dẫn chi tiết về cách thực hiện việc này.
Trước tiên, bạn định nghĩa một lớp cơ sở với một constructor và một số thuộc tính:
class Animal { name: string; constructor(name: string) { this.name = name; console.log(`Animal created: ${this.name}`); } makeSound() { console.log(`${this.name} makes a sound.`); } }
Khi bạn định nghĩa lớp con, bạn sẽ gọi super()
trong constructor của lớp con để khởi tạo constructor của lớp cơ sở. Đây là một ví dụ về lớp Dog
kế thừa từ lớp Animal
:
class Dog extends Animal { breed: string; constructor(name: string, breed: string) { super(name); // Gọi constructor của lớp cơ sở this.breed = breed; console.log(`Dog created: ${this.name}, Breed: ${this.breed}`); } bark() { console.log(`${this.name} barks.`); } }
Khi bạn tạo một đối tượng của lớp Dog
, constructor của lớp Animal
sẽ được gọi trước:
const myDog = new Dog("Buddy", "Golden Retriever"); // Đầu ra: // Animal created: Buddy // Dog created: Buddy, Breed: Golden Retriever
Dog
kế thừa từ lớp Animal
thông qua từ khóa extends
. Điều này có nghĩa là Dog
sẽ có tất cả các thuộc tính và phương thức của Animal
.Dog
, super(name)
được gọi trước bất kỳ thao tác nào khác. Điều này là bắt buộc vì bạn không thể truy cập this
trước khi gọi super()
trong một lớp con.super()
, bạn có thể khởi tạo các thuộc tính riêng của lớp con, như breed
.Để gọi hàm constructor của lớp cơ sở từ lớp con trong TypeScript, bạn chỉ cần sử dụng từ khóa super()
trong constructor của lớp con. Việc này không chỉ khởi tạo các thuộc tính của lớp cơ sở mà còn giúp duy trì mối quan hệ kế thừa giữa các lớp. Điều này giúp tổ chức mã nguồn tốt hơn và tăng khả năng tái sử dụng mã.