Có nhiều điều để nói trong câu trả lời cho câu hỏi này, đây là những suy nghĩ đầu tiên mà nhảy lên tâm trí tôi:
Trước hết, hãy ghi nhớ rằng private
chỉ là xây dựng thời gian biên dịch - nó không thể được thi hành khi chạy (xem here và here để thảo luận có liên quan). Do vậy, vui lòng không tự sử dụng bất kỳ khái niệm nào của private
hữu ích theo bất kỳ cách nào vì mục đích bảo mật. Đó chỉ đơn giản là không phải là những gì nó về.
Nó là về đóng gói và khi bạn có trường hoặc phương pháp trên thành phần bạn muốn đóng gói, hãy làm rõ rằng nó không được truy cập từ bất kỳ nơi nào khác, bạn hoàn toàn nên làm private
: Đó là những gì private
là dành cho: Nó báo hiệu ý định của bạn rằng bất cứ điều gì bạn đã đặt nó trên không nên được xúc động từ bên ngoài lớp học.
Tương tự như vậy đối với public
: Nó cũng là cấu trúc chỉ có thời gian biên dịch, vì vậy thực tế là các thành viên của lớp là public
theo mặc định, trong khi đúng, có chính xác bằng không khi chạy. Nhưng khi bạn có một thành viên mà bạn có ý định để lộ ra thế giới bên ngoài như một phần của API của lớp học, bạn hoàn toàn nên làm cho nó public
để báo hiệu ý định này: Đó là những gì public
là dành cho.
Tất cả điều này đều áp dụng được cho Typecript nói chung. Ví dụ, khi sử dụng mẫu container/component (còn gọi là smart/dumb), với các con "câm" tiêm cha mẹ "thông minh" thông qua việc xây dựng, nó cực kỳ quan trọng để giao tiếp ý định của bạn về những gì các thành viên trên cha mẹ nên và không nên được xúc động bởi các trẻ em: Nếu không, đừng ngạc nhiên khi bạn bắt những đứa trẻ câm lừa xung quanh trong tủ rượu của bạn.
Vì vậy, câu trả lời của tôi cho câu hỏi của bạn:
nên tôi luôn luôn thêm tin cho tất cả chúng như dưới đây?
là nhấn mạnh no. Bạn không nên luôn luôn thêm private
vì làm như vậy bạn đánh bại mục đích của từ khóa, bởi vì nó không còn báo hiệu bất kỳ ý định nào nếu bạn đặt nó ở mọi nơi: Bạn cũng có thể không đặt nó ở bất kỳ đâu.
cảm ơn cho lời giải thích chi tiết! –
Cảm ơn bạn đã giải thích. Nhưng có lẽ tôi hiểu sai: Tôi hiểu rằng hầu hết các thuộc tính và phương thức thời gian phải là riêng tư (= "cho thành phần này chỉ sử dụng"). Vì vậy, câu trả lời nên là "CÓ theo mặc định, miễn là anh chàng không cần để lộ các tài sản/phương pháp để bên ngoài". Không? Tại sao kết luận giải thích của bạn bằng cách trả lời "không" (có vẻ như là "không bao giờ")? –
Tôi hướng dẫn về góc đỏ 2, và tôi đã không tìm ra khi nào tôi nên sử dụng công khai. Có rất nhiều biến thể cho giao tiếp thành phần: https://angular.io/docs/ts/latest/cookbook/component-communication.html# Có lẽ chúng ta chỉ nên sử dụng công khai cho các thuộc tính và phương thức được xác định thông qua Đầu vào đầu vào. Nhưng tôi không chắc chắn. –