Bài 11: TypeScript – Class: fields, constructor
Trong thời đại của OOP, class là một thành phần hết sức quan trọng. Class giúp việc áp dụng các pattern hay tái sử dụng code, giúp việc sử dụng code linh hoạt hơn. Hôm nay chúng ta sẽ cùng nhau tìm hiểu về Class trong TypeScript và các tính chất, khái niệm cơ bản của nó nhé.
Structure
Cấu trúc của một class cơ bản gồm có :
- Fields
- Constructor
- Methods
Ví dụ cụ thể về một class trong TypeScript
class Student {
// fields
studentName: string;
// constructor
constructor(name: string) {
this.studentName = name;
}
// method
getName(): void {
return this.studentName;
}
}
let student = new Student("UncleBob");
Code JS sau khi được compile
var Student = /** @class */ (function () {
function Student(name) {
this.studentName = name;
}
Student.prototype.getName = function () {
return this.studentName;
};
return Student;
}());
var student = new Student("UncleBob");
Fields trong TypeScript
Field là một thuộc tính của class, các thuộc tính này có thể được khai báo từ đầu, hoặc thay đổi tuỳ theo cách class được khai báo và trong quá trình làm việc với các đối tượng của class. Chúng không cần theo các từ khoá var, let, const khi khai báo.
class IEmployee {
name: string;
age?: number;
address;
phoneNumber: 0987654321
constructor (name: string, age: number, address, phoneNumber: number) {
this.name = name;
this.address = address;
this.phoneNumber = phoneNumber;
};
}
Các field trong class có thể được khai báo type, nếu không thì chúng sẽ được mặc định là type any hoặc được tự suy ra từ các giá trị nó được gán với ( Type Inference )
Các field còn có thể sử dụng các tiền tố như readonly như một cách ngăn chặn việc ghi đè dữ liệu từ bên ngoài sau khi đã đối tượng (object) đã được khởi tạo
class IEmployee {
readonly companyInfo: string;
constructor (companyInfo: string) {
this.companyInfo = companyInfo
};
}
let employee = new IEmployee('yeulaptrinh.vn')
employee.companyInfo = 'yeulaptrinh.net' // Err: Cannot assign to 'companyInfo' because it is a read-only property
Constructor trong TypeScript
construtor có thể coi là một phương thức đặc biệt trong class được gọi khi chúng ta tạo các đối tượng (object) từ class ùng với keyword new. Nó khởi tạo các giá trị để cung cấp dữ liệu cho các đối tượng, ở ví dụ trên , object student được khởi tạo từ class Student, trường studentName của nó được truyền vào thông qua constructor
let student = new Student("UncleBob");
console.log(student); // Student { studentName: 'UncleBob' }
student.getName(); // UncleBob
Một số đặc điểm của constructor:
- Nó chỉ có tên gọi duy nhất là constructor
- Nó không có kiểu trả về – vì nó chỉ trả về duy nhất là đối tượng (object) được khởi tạo thông qua nó
- Mỗi class chỉ có duy nhất một constructor, tuy nhiên chúng ta có thể làm việc với các phương pháp thay thế, tương đương với multiple constructor như trong các ngôn ngữ Java, C++,.. phần này mình sẽ dành một bài viết riêng cho nó.
- Trong class có bao nhiêu trường và không phải là các optional field thì trong constructor phải gán hết từng ấy giá trị
- Các class không nhất thiết đều phải có constructor khi khởi tạo, khi tất cả các fields đều là optional, TypeScript vẫn sẽ tự động nhận định class này có một constructor rỗng, không gán hay điều chỉnh nội dung của bất kỳ một trường nào.
Summary
Ở phần này chúng ta đã tìm hiểu các khái niệm cơ bản của class trong TypeScript: fields, construct. Ở bài viết tiếp theo chúng ta sẽ tìm hiểu nâng cao về cách sử dụng class, các phương thức bên trong, cách ứng dụng thực tế class trong quá trình code. Các bạn cùng đón chờ các bài viết tiếp theo của chúng mình trên yeulaptrinh.vn nhé