Mảng chỉ đọc trong TypeScript là một cấu trúc dữ liệu mà bạn có thể khởi tạo nhưng không thể thay đổi hoặc chỉnh sửa sau khi đã được tạo. Việc sử dụng mảng chỉ đọc giúp bảo vệ dữ liệu và đảm bảo rằng nó không bị thay đổi một cách vô tình trong quá trình xử lý. Trong bài viết này, chúng ta sẽ khám phá cách tạo và sử dụng mảng chỉ đọc trong TypeScript, cũng như một số tình huống mà bạn nên áp dụng chúng.

Khái niệm về mảng chỉ đọc

Mảng chỉ đọc trong TypeScript được định nghĩa bằng cách sử dụng từ khóa readonly. Khi bạn khai báo một mảng là readonly, bạn không thể thực hiện các thao tác thay đổi như thêm, xóa hoặc chỉnh sửa phần tử trong mảng đó.

Tại sao nên sử dụng mảng chỉ đọc?

  • Bảo vệ dữ liệu: Mảng chỉ đọc giúp bảo vệ dữ liệu khỏi những thay đổi không mong muốn, giúp cho mã nguồn trở nên đáng tin cậy hơn.
  • Dễ bảo trì: Khi dữ liệu không thay đổi, bạn có thể dễ dàng theo dõi và bảo trì mã nguồn hơn.
  • Hỗ trợ lập trình hàm: Mảng chỉ đọc thường được sử dụng trong các hàm và thuật toán, nơi bạn không muốn thay đổi dữ liệu đầu vào.

Cách tạo mảng chỉ đọc

Dưới đây là hướng dẫn chi tiết về cách tạo và sử dụng mảng chỉ đọc trong TypeScript.

1. Khai báo mảng chỉ đọc

Để khai báo một mảng chỉ đọc, bạn chỉ cần thêm từ khóa readonly trước kiểu dữ liệu của mảng. Ví dụ:

const readonlyArray: readonly number[] = [1, 2, 3, 4, 5];

2. Các thao tác với mảng chỉ đọc

Vì mảng chỉ đọc không cho phép bạn thực hiện các thao tác thay đổi, bạn chỉ có thể truy cập các phần tử trong mảng mà không thể thay đổi chúng.

console.log(readonlyArray[0]); // Kết quả: 1

3. Thao tác không hợp lệ

Khi bạn cố gắng thực hiện một số thao tác không hợp lệ trên mảng chỉ đọc, TypeScript sẽ đưa ra lỗi biên dịch:

readonlyArray.push(6); // Lỗi: Property 'push' does not exist on type 'readonly number[]'.
readonlyArray[0] = 10; // Lỗi: Index signature in type 'readonly number[]' only permits reading.

4. Mảng chỉ đọc với kiểu dữ liệu tùy chỉnh

Mảng chỉ đọc cũng có thể chứa các kiểu dữ liệu tùy chỉnh. Dưới đây là ví dụ về việc sử dụng một interface:

interface Person {
    name: string;
    age: number;
}

const readonlyPeople: readonly Person[] = [
    { name: "Alice", age: 30 },
    { name: "Bob", age: 25 },
];

// Truy cập phần tử
console.log(readonlyPeople[1].name); // Kết quả: Bob

5. Chuyển đổi mảng chỉ đọc

Nếu bạn cần thực hiện các thao tác thay đổi trên một mảng chỉ đọc, bạn có thể tạo một bản sao của mảng và thực hiện thay đổi trên bản sao đó. Dưới đây là một ví dụ:

const mutableArray = [...readonlyArray]; // Tạo bản sao
mutableArray.push(6); // Thực hiện thay đổi trên bản sao
console.log(mutableArray); // Kết quả: [1, 2, 3, 4, 5, 6]

Kết luận

Mảng chỉ đọc trong TypeScript là một công cụ hữu ích giúp bảo vệ dữ liệu và đảm bảo rằng dữ liệu không bị thay đổi trong quá trình xử lý. Bằng cách sử dụng từ khóa readonly, bạn có thể dễ dàng tạo ra các mảng chỉ đọc để tổ chức và quản lý mã nguồn tốt hơn. Việc áp dụng mảng chỉ đọc có thể giúp cải thiện chất lượng mã và giảm thiểu lỗi, đặc biệt là trong các ứng dụng lớn và phức tạp.