2017-01-19 28 views
18

Không sử dụng React.PropTypes có ý nghĩa trong một Ứng dụng React TypeScript hay đây chỉ là trường hợp của "vành đai và treo"?PropTypes trong Ứng dụng React TypeScript

Kể từ khi lớp thành phần được khai báo với một tham số Props loại:

interface Props { 
    // ... 
} 
export class MyComponent extends React.Component<Props, any> { ... } 

có bất kỳ lợi ích thực sự cho thêm

static propTypes { 
    myProp: React.PropTypes.string 
} 

để định nghĩa lớp học?

Trả lời

3

Tôi đoán rằng trong một số trường hợp lộn xộn mà loại đạo cụ không thể suy ra tại thời gian biên dịch, thì sẽ hữu ích khi thấy bất kỳ cảnh báo nào được tạo từ việc sử dụng propTypes.

Ngoài ra, tôi không thực sự thấy bất kỳ lợi ích nào (vì sao tôi không bao giờ sử dụng nó một cách cá nhân).

22

Nếu bạn đang viết các thành phần được tiêu thụ bởi các dự án không phải là TypeScript, chẳng hạn như thư viện thành phần, các dự án đó sẽ không thể hưởng lợi từ xác thực loại dựa trên PropTypes.

Nếu, tuy nhiên, bạn đang không làm bất kỳ thứ gì sẽ được tiêu thụ bởi dự án không phải là TypeScript, nó là một bài tập vô nghĩa. Điều này đặc biệt vì vậy bây giờ TypeScript 2.4 sẽ hỗ trợ kiểm tra kiểu con JSX (https://github.com/Microsoft/TypeScript/issues/13618).

Hãy nhớ rằng mặc dù context được cung cấp dưới dạng any, contextTypes vẫn cần thiết để có các giá trị đó được chuyển đến thành phần của bạn.

Tôi quan tâm để xem liệu có công cụ nào có thể tự động tạo propTypes lúc biên dịch từ giao diện TypeScript hay không. Điều này quả thật rất tuyệt.

+0

Điểm tốt. Tôi sẽ tiếp tục đưa họ vào. – Ralph

+0

Bạn có thể giải thích câu đầu tiên không? – vehsakul

+1

@vehsakul Xin lỗi, để làm rõ, nếu bạn đang viết một gói sẽ được cài đặt bởi các nhà phát triển không sử dụng TypeScript, họ vẫn cần PropTypes để nhận lỗi trong thời gian chạy. Nếu dự án của bạn chỉ dành cho chính bạn/các dự án TypeScript khác, giao diện TypeScript cho đạo cụ của bạn là đủ bởi vì dự án đơn giản sẽ không xây dựng. –

Các vấn đề liên quan