Trong lập trình hướng đối tượng, khái niệm 'Encapsulation' được sử dụng để làm cho các thành viên của lớp là công khai hoặc riêng tư, tức là một lớp có thể kiểm soát khả năng hiển thị của các thành phần dữ liệu của nó. Điều này được thực hiện bằng cách sử dụng các từ khóa kiểm soát truy cập (access modifier).
Có ba từ khóa kiểm soát quyền truy cập trong TypeScript: public
, private
và protected
.
Theo mặc định, tất cả các thành viên của một lớp trong TypeScript là public. Tất cả các thành viên public
có thể được truy cập ở bất cứ đâu mà không có bất kỳ hạn chế nào.
class Employee {
public empCode: string;
empName: string;
}
let emp = new Employee();
emp.empCode = 123;
emp.empName = "Swati";
Trong ví dụ trên, các biên empCode
và empName
được khai báo là public. Vì vậy, chúng có thể được truy cập bên ngoài lớp bằng cách sử dụng một đối tượng của lớp.
Xin lưu ý rằng không có bất kỳ từ khóa kiểm soát truy cập nào được áp dụng cho empName
. TypeScript sử dụng public mặc định cho các thuộc tính và phương thức nếu không có bất kỳ từ khóa kiểm soát truy cập nào được áp dụng cho chúng.
Từ khóa kiểm soát truy cập private
đảm bảo rằng các thành viên của lớp chỉ hiển thị đối với lớp đó và không thể truy cập được bên ngoài lớp.
class Employee {
private empCode: number;
empName: string;
}
let emp = new Employee();
emp.empCode = 123; // Compiler Error
emp.empName = "Swati";//OK
Trong ví dụ trên, chúng tôi đã đánh dấu thành viên empCode
là private. Do đó, khi chúng ta tạo một đối tượng emp
và cố gắng truy cập thành viên emp.empCode
, nó sẽ xuất hiện một lỗi.
Từ khóa kiểm soát truy cập protected
tương tự như từ khóa kiểm soát truy cập private
, ngoại trừ việc các thành viên protected có thể được truy cập trong các lớp kế thừa từ chúng.
class Employee {
public empName: string;
protected empCode: number;
constructor(name: string, code: number){
this.empName = name;
this.empCode = code;
}
}
class SalesEmployee extends Employee{
private department: string;
constructor(name: string, code: number, department: string) {
super(name, code);
this.department = department;
}
}
let emp = new SalesEmployee("John Smith", 123, "Sales");
empObj.empCode; //Compiler Error
Trong ví dụ trên, chúng ta có một lớp Employee
với hai thành viên, thuộc tính public empName
và thuộc tính protected empCode
. Chúng ta tạo một lớp con SalesEmployee
kế thừa từ lớp cha Employee
. Nếu chúng ta cố gắng truy cập thành viên protected emp.empCode
từ bên ngoài, chúng ta nhận được lỗi biên dịch sau:
error TS2445: Property 'empCode' is protected and only accessible within class 'Employee' and its subclasses.
Ngoài các từ khóa kiểm soát quyền truy cập, TypeScript cung cấp thêm hai từ khóa: readOnly
và static
. Chúng ta sẽ tìm hiểu về chúng trong bài viết tiếp theo.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Namespace được sử dụng để nhóm logic các chức năng. Namespace có thể bao gồm các interface, lớp, hàm và biến để hỗ trợ một nhóm các chức năng liên quan.
Trong hướng dẫn này bạn sẽ tìm hiểu về từ khóa readonly, static và cách sử dụng chúng trong TypeScript.
Định nghĩa một abstract class trong TypeScript bằng cách sử dụng từ khóa abstract. Abstract class chủ yếu được sử dụng để các lớp khác kế thừa từ chúng. Chúng ta không thể tạo một thể hiện của một abstract class.
Trong phần này, chúng ta sẽ tìm hiểu về module trong TypeScript. Cách export, import, biên dịch và sử dụng các module trong ứng dụng web.