Mari kita mulakan dengan senario dan tugasan yang berkaitan dengannya.
Kami mempunyai aplikasi pemesejan dengan bar status yang menunjukkan status semasa pengguna dan membolehkan mereka mengemas kininya. Kita perlu menambah lungsur turun dari mana pengguna boleh menukar status mereka dan menggunakan useState() untuk menunjukkan dan mengemas kini status semasa pengguna dalam UI.
Untuk kesederhanaan, kami hanya akan menumpukan pada pelaksanaan useState dalam artikel ini, dan menjelang akhir artikel, anda akan memahami bagaimana walaupun untuk contoh mudah TypeScript adalah pilihan yang lebih berkuasa.
Kami perlu mentakrifkan useState() yang menyimpan dan mengemas kini userStatus dan dimulakan dengan salah satu daripada lima pilihan status yang mungkin (katakan aktif).
Semua pilihan yang mungkin adalah:
Ini adalah tugas yang sangat mudah, bukan? Apa yang perlu kita lakukan ialah mentakrifkan useState dan mulakannya kepada aktif dan kemudian gunakan fungsi set untuk mengemas kini status dan kami telah selesai.
Tetapi tunggu! Apakah yang berlaku apabila seseorang menyemak kod saya atau melawat sekeping kod ini kemudian (katakan selepas 1 minggu, 2 minggu, 1 bulan, 6 bulan, atau apa sahaja), bagaimana mereka akan tahu apakah semua pilihan yang mungkin/sah?
Ahh! Ya, kami boleh menambah ulasan di sebelah useState untuk memberitahu mereka bahawa ini adalah semua pilihan yang mungkin.
Tetapi, ini bukan penyelesaian yang baik, bukan? Jadi, bagaimana kita boleh memperbaikinya?
Pencarian objek ialah penyelesaian yang sangat bagus untuk masalah kami. Jadi, mari kita mulakan dengan mentakrifkan carian objek yang dipanggil UserStatus dan gunakannya untuk menetapkan nilai userStatus kami.
Sekarang, mari kemas kini definisi useState kami.
Sekarang, mari cuba kemas kini status.
Ohh! Lihatlah itu, kini kami mendapat autolengkap dalam editor kami dan boleh menyemak semua nilai yang mungkin/sah bagi UserStatus dengan melihat definisi UserStatus.
Walaupun kaedah carian objek nampaknya telah menyelesaikan masalah kami dan pastinya merupakan penyelesaian yang jauh lebih baik daripada hanya menambah komen, ia masih mempunyai dua isu utama:
Jadi, bagaimana kita boleh menyelesaikan isu ini?
Jawapan: Typescript
Mari kita mulakan semula dengan penyelesaian kami, tetapi kali ini dalam fail .tsx atau Typescript. Kita boleh mulakan dengan mentakrifkan fungsi useState() dan memulakannya dengan nilai: aktif.
Tiada apa yang kelihatan berbeza sekarang, tetapi begitu. Mari kemas kini nilai Status pengguna.
Ahh! Seperti yang anda lihat, ia memberi kami garis ralat berlekuk merah yang ditakuti di sekeliling beberapa fungsi set tetapi bukan pada fungsi yang kami menetapkan nilai rentetan. Ini kerana Typescript menyimpulkan jenis keadaan kami daripada nilai awalnya (iaitu rentetan jenis).
Ya, ini akan menghalang kami daripada menetapkan sebarang nilai bukan rentetan kepada keadaan userStatus kami, tetapi ia masih tidak menghalang kami daripada menetapkan sebarang nilai rentetan rawak dan kami masih perlu menggunakan carian objek untuk mendokumenkan semua pilihan yang mungkin , anda boleh bertanya.
Jom buat "Satu Batu, Dua Burung".
Dalam Typescript kita boleh mencipta jenis tersuai dan ia juga mempunyai sokongan untuk generik yang boleh digunakan dalam React untuk definisi cangkuknya, dalam kes kami cangkuk useState().
Mari buat jenis UserStatus baharu dalam komponen React kami.
Sekarang, mari gunakan jenis ini dalam definisi useState kami.
Sehingga kini, semuanya kelihatan serupa dengan cara kami melakukannya dalam kaedah carian objek, tetapi keajaiban Typescript ialah apabila kami mula menggunakan fungsi set kami dan nilai keadaan.
Mendapatkan takrif jenis status pengguna.
Autolengkap untuk fungsi setUserStatus.
Mendapatkan pengesahan yang betul untuk nilai yang sah dan tidak sah.
Lihat itu,
Sekarang, anda mungkin sudah faham bagaimana TypeScript benar-benar boleh meningkatkan pengalaman pembangunan kami. Kami hanya menconteng permukaan dengan contoh mudah di sini, tetapi hanya fikirkan tentang aplikasi dunia sebenar yang kami bina, menggunakan TypeScript boleh bermakna lebih sedikit pepijat dan pengalaman pembangun yang lebih baik secara keseluruhan.
Saya harap artikel ini menggalakkan anda mula menggunakan Typescript dalam semua aplikasi React anda dan membina pengalaman web yang hebat.
Jika anda menyukai artikel ini dan ingin menyambung, maka anda boleh berhubung dengan saya di Linked dan X/Twitter
Atas ialah kandungan terperinci Cara TypeScript Menjadikan Reaksi Lebih Baik: Pengalaman Pembangun yang Lebih Lancar, Kurang Pepijat (Dengan Contoh UseState). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!