0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hiểu Rõ Về Tính Immutability Trong TypeScript Với `readonly`

Đăng vào 7 tháng trước

• 4 phút đọc

Tính Immutability Ở Cấp Độ Type Trong TypeScript Với readonly


💡 Giới thiệu
Khi bạn muốn đảm bảo rằng không ai có thể thay đổi các kiểu dữ liệu của bạn, readonly chính là công cụ hữu ích nhất.


🧠 Bối cảnh

Khác với as const, áp dụng ở cấp độ giá trị, readonly áp dụng tính bất biến ở cấp độ kiểu. Điều này ngăn chặn những thay đổi không mong muốn trong các đối tượng, mảng và thuộc tính của lớp.


📌 Ứng dụng trong React

Trong các ứng dụng React, readonly đảm bảo các props, kiểu dữ liệu phản hồi từ API và các đối tượng dùng chung không bị thay đổi.


❓ Tại sao nên sử dụng readonly?

  • Ngăn chặn các lỗi thời gian chạy bằng cách cấm thay đổi.
  • Hữu ích cho việc mô hình hóa phản hồi từ API.
  • Đảm bảo tính bất biến trong các mã nguồn lớn.

📝 Ví dụ với và không có readonly

Không có readonly

typescript Copy
// Không có readonly
interface User {
  name: string;
  age: number;
}
let user: User = { name: "Arka", age: 22 };
user.age = 23; // Được phép

Với readonly

typescript Copy
// Với readonly
interface User {
  readonly name: string;
  readonly age: number;
}
let user: User = { name: "Arka", age: 22 };
user.age = 23; // Lỗi: không thể gán

📌 Trường hợp sử dụng thực tế

Props trong React

typescript Copy
type ProfileProps = {
  readonly name: string;
  readonly skills: readonly string[];
};

function Profile({ name, skills }: ProfileProps) {
  // Không thể thay đổi skills bên trong
  return <div>{skills.join(", ")}</div>;
}

Phản hồi API

typescript Copy
type ApiResponse = {
  readonly id: number;
  readonly status: "success" | "error";
};

readonly đảm bảo an toàn thời gian biên dịch. Nó không làm cho dữ liệu thực sự bất biến trong thời gian chạy, nhưng nó ngăn chặn sự thay đổi trong mã.


Thực hành tốt nhất khi sử dụng readonly

  • Sử dụng cho các kiểu dữ liệu phản hồi từ API:
    Khi bạn xử lý phản hồi từ API, hãy đánh dấu các thuộc tính là readonly. Điều này giúp bạn tránh việc vô tình thay đổi dữ liệu sau khi nhận được.
  • Áp dụng cho props trong React:
    Đảm bảo rằng các props bạn truyền vào thành phần React đều là readonly để bảo vệ tính toàn vẹn của dữ liệu.

Những cạm bẫy thường gặp

  • Quên thêm readonly vào các kiểu dữ liệu:
    Đôi khi, bạn có thể quên đánh dấu thuộc tính là readonly, dẫn đến việc thay đổi giá trị không mong muốn.
  • Hiểu sai về tính bất biến:
    readonly không ngăn chặn sự thay đổi dữ liệu trong thời gian chạy. Nó chỉ ngăn cản việc thay đổi trong mã của bạn.

Mẹo hiệu suất

  • Kiểm tra và bảo trì mã:
    Sử dụng các công cụ kiểm tra kiểu để đảm bảo rằng bạn không có những thay đổi không mong muốn trong mã của mình.
  • Cập nhật tài liệu:
    Đảm bảo rằng tất cả các thành viên trong nhóm phát triển hiểu rõ về readonly và cách sử dụng nó đúng cách.

Giải quyết sự cố

  • Lỗi khi gán giá trị:
    Nếu bạn gặp lỗi khi cố gắng gán giá trị cho thuộc tính readonly, hãy xem xét lại mã của bạn để xác định xem thuộc tính đó có được đánh dấu là readonly hay không.
  • Kiểm tra kiểu:
    Sử dụng TypeScript để kiểm tra kiểu và đảm bảo rằng mã của bạn tuân thủ các quy tắc đã đặt ra.

Kết luận

Sử dụng readonly trong TypeScript là một cách tuyệt vời để đảm bảo rằng mã của bạn an toàn hơn và tránh được những lỗi không đáng có. Hãy bắt đầu áp dụng readonly ngay hôm nay trong các dự án của bạn để nâng cao chất lượng mã nguồn!

Hãy chia sẻ bài viết này với đồng nghiệp của bạn để họ cũng biết đến lợi ích của readonly trong TypeScript!


Câu hỏi thường gặp (FAQ)

1. readonly có ảnh hưởng đến hiệu suất không?
readonly không ảnh hưởng đến hiệu suất vì nó chỉ là một chỉ thị cho TypeScript trong quá trình biên dịch.
2. Tôi có thể sử dụng readonly với các kiểu dữ liệu khác không?
Có, bạn có thể sử dụng readonly với bất kỳ kiểu dữ liệu nào trong TypeScript để đảm bảo tính bất biến.

Tài nguyên tham khảo


Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào