Apakah menggunakan React.PropTypes
masuk akal dalam Aplikasi TypeScript React atau apakah ini hanya kasus "sabuk dan suspender"?
Karena kelas komponen dideklarasikan dengan Props
parameter type:
interface Props {
// ...
}
export class MyComponent extends React.Component<Props, any> { ... }
apakah ada manfaat nyata untuk menambahkan
static propTypes {
myProp: React.PropTypes.string
}
dengan definisi kelas?
sumber
Typecript dan PropTypes melayani tujuan yang berbeda. Ketikan memvalidasi tipe pada waktu kompilasi , sedangkan PropTypes diperiksa saat runtime .
Ketikan berguna ketika Anda menulis kode: ini akan memperingatkan Anda jika Anda mengirimkan argumen dengan tipe yang salah ke komponen React Anda, memberi Anda pelengkapan otomatis untuk pemanggilan fungsi, dll.
PropTypes berguna saat Anda menguji bagaimana komponen berinteraksi dengan data eksternal, misalnya saat Anda memuat JSON dari API. PropTypes akan membantu Anda men-debug (saat dalam mode Pengembangan React) mengapa komponen Anda gagal dengan mencetak pesan yang berguna seperti:
Meskipun sepertinya Typecript dan PropTypes melakukan hal yang sama, mereka sebenarnya tidak tumpang tindih sama sekali. Tapi dimungkinkan untuk secara otomatis menghasilkan PropTypes dari Typecript sehingga Anda tidak perlu menentukan tipe dua kali, lihat misalnya:
sumber
Saya rasa dalam beberapa situasi yang berantakan di mana jenis props tidak dapat disimpulkan pada waktu kompilasi, maka akan berguna untuk melihat peringatan yang dihasilkan dari penggunaan
propTypes
pada waktu proses.Salah satu situasi tersebut adalah ketika memproses data dari sumber eksternal yang definisi jenisnya tidak tersedia, seperti API eksternal di luar kendali Anda. Untuk API internal, menurut saya sepadan dengan usaha untuk menulis (atau lebih baik, menghasilkan) definisi tipe, jika mereka belum tersedia.
Selain itu, saya tidak benar-benar melihat manfaat apa pun (yang mengapa saya tidak pernah menggunakannya secara pribadi).
sumber