Từ khóa kiểm soát truy cập trong TypeScript

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, privateprotected.

Từ khóa public

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 empCodeempName đượ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 private

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 protected

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: readOnlystatic. Chúng ta sẽ tìm hiểu về chúng trong bài viết tiếp theo.

TypeScript
Bài Viết Liên Quan:
Namespace trong TypeScript
Trung Nguyen 14/10/2021
Namespace trong TypeScript

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.

Từ khóa readonly và static trong TypeScript
Trung Nguyen 13/10/2021
Từ khóa readonly và static trong TypeScript

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.

Abstract Class trong TypeScript
Trung Nguyen 11/10/2021
Abstract Class 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.

Module trong TypeScript
Trung Nguyen 10/10/2021
Module trong TypeScript

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.