Nhảy tới nội dung

Constructor (constructor)

Constructor là function được thực thi khi new class. Constructor là nơi implement xử lý khởi tạo instance property. Constructor trong JavaScript được viết bằng cú pháp constructor.

ts
class Person {
constructor(name) {
// ...
}
}
ts
class Person {
constructor(name) {
// ...
}
}

Type annotation cho constructor

Trong TypeScript, type annotation cho tham số constructor giống như cách type annotation cho function.

ts
class Person {
constructor(name: string) {
// ...
}
}
ts
class Person {
constructor(name: string) {
// ...
}
}

Không thể type annotation cho giá trị trả về của constructor. Giá trị trả về của constructor đương nhiên là instance của class, nên không cần phải báo cho compiler biết qua type annotation.

Truyền tham số cho constructor

Cách truyền tham số cho constructor trong JavaScript gần giống với cách gọi function. Điểm khác là có thêm toán tử new.

ts
new Person("Alice");
ts
new Person("Alice");

Async hóa constructor

Trong TypeScript, không thể async hóa constructor. Không thể viết như sau:

ts
class Person {
async constructor(name: string) {
// ...
}
}
ts
class Person {
async constructor(name: string) {
// ...
}
}

Nếu nhất định muốn async hóa, hãy chuẩn bị factory method trả về instance của class và thực thi xử lý async trong method đó.

ts
class Person {
static async create(name: string): Promise<Person> {
// Xử lý async
return new Person(name);
}
constructor(name: string) {
// ...
}
}
ts
class Person {
static async create(name: string): Promise<Person> {
// Xử lý async
return new Person(name);
}
constructor(name: string) {
// ...
}
}

Thông tin liên quan

📄️ Constructor shorthand

Không thể đặt access modifier cho tham số của method, nhưng constructor là trường hợp đặc biệt.