Trong TypeScript, các bộ điều chỉnh truy cập (access modifiers) xác định phạm vi truy cập của các thuộc tính và phương thức trong một lớp. Có ba bộ điều chỉnh truy cập chính trong TypeScript: public, private, và protected. Khi không được chỉ định rõ, TypeScript sẽ áp dụng bộ điều chỉnh truy cập mặc định là public. Dưới đây là chi tiết về các bộ điều chỉnh truy cập và cách hoạt động của chúng.

1. public

  • Mô tả: Khi một thuộc tính hoặc phương thức được khai báo là public, nó có thể được truy cập từ bất kỳ đâu, bao gồm cả bên ngoài lớp và từ các lớp con.
  • Mặc định: Nếu bạn không chỉ định bộ điều chỉnh truy cập, TypeScript sẽ mặc định coi nó là public.
class Person {
    name: string; // Mặc định là public

    constructor(name: string) {
        this.name = name;
    }

    greet() {
        console.log(`Hello, my name is ${this.name}`);
    }
}

const person = new Person("Alice");
console.log(person.name); // Có thể truy cập
person.greet(); // Có thể gọi

2. private

  • Mô tả: Thuộc tính hoặc phương thức được khai báo là private chỉ có thể được truy cập từ bên trong cùng một lớp. Nó không thể được truy cập từ bên ngoài lớp hoặc từ các lớp con.
class Person {
    private age: number;

    constructor(age: number) {
        this.age = age;
    }

    getAge() {
        return this.age; // Truy cập được từ bên trong lớp
    }
}

const person = new Person(30);
console.log(person.getAge()); // Được phép
// console.log(person.age); // Lỗi: thuộc tính 'age' không thể truy cập được

3. protected

  • Mô tả: Thuộc tính hoặc phương thức được khai báo là protected có thể được truy cập từ bên trong cùng một lớp và từ các lớp con, nhưng không thể được truy cập từ bên ngoài.
class Person {
    protected name: string;

    constructor(name: string) {
        this.name = name;
    }
}

class Employee extends Person {
    getName() {
        return this.name; // Có thể truy cập từ lớp con
    }
}

const employee = new Employee("Bob");
console.log(employee.getName()); // Được phép
// console.log(employee.name); // Lỗi: thuộc tính 'name' không thể truy cập được

Kết luận

Khi không chỉ định bộ điều chỉnh truy cập, TypeScript sẽ mặc định sử dụng public cho các thuộc tính và phương thức trong lớp. Điều này giúp cho mã dễ đọc và dễ sử dụng hơn, đồng thời cho phép lập trình viên linh hoạt trong việc kiểm soát mức độ truy cập của các thành phần trong lớp. Việc hiểu rõ về các bộ điều chỉnh truy cập là rất quan trọng để xây dựng mã nguồn an toàn và bảo trì dễ dàng trong các ứng dụng TypeScript.