Rumah >hujung hadapan web >tutorial js >Mengapa TypeScript Melemparkan Ralat Apabila Menggunakan `Array.prototype.includes()` dengan Pelbagai Jenis?
Mengapa Array.prototype.includes() Memerlukan Jenis Padanan untuk Elemen Tatasusunan
Kaedah Array.prototype.includes() bertujuan untuk menentukan jika tatasusunan mengandungi elemen tertentu. Untuk memastikan hasil yang tepat dan boleh dipercayai, parameter searchElement mesti sepadan dengan jenis elemen tatasusunan. Keselamatan jenis ini menghalang perbandingan yang salah dan mengekalkan integriti integriti data tatasusunan.
Pertimbangkan coretan kod berikut:
<code class="js">type AllowedChars = 'x' | 'y' | 'z'; const exampleArr: AllowedChars[] = ['x', 'y', 'z']; function checkKey(e: KeyboardEvent) { if (exampleArr.includes(e.key)) { // ... } }</code>
Pengkompil TypeScript membenderakan ralat, menunjukkan bahawa e.key parameter tidak sepadan dengan jenis AllowedChars bagi elemen exampleArr. Ralat ini adalah kerana kaedah includes() mengandaikan bahawa searchElement mempunyai jenis yang sama dengan elemen tatasusunan.
Ia mungkin kelihatan bercanggah kerana Array.prototype.includes() mengembalikan nilai boolean dan bukannya tugasan, kerana ralat mencadangkan. Walau bagaimanapun, sistem jenis skrip taip memainkan peranan penting di sini.
Memasukkan elemen dalam tatasusunan membayangkan bahawa jenis elemen itu konsisten dengan elemen tatasusunan. Walau bagaimanapun, dalam contoh yang diberikan, jenis parameter e.key ialah rentetan, manakala elemen exampleArr adalah daripada jenis AllowedChars. Ketidakpadanan ini memerlukan penegasan jenis atau pelebaran jenis untuk mengatasi jangkaan sistem jenis TypeScript.
Pendekatan paling mudah dan paling disyorkan untuk menyelesaikan isu ini ialah meluaskan jenis exampleArr kepada jenis rentetan yang lebih luas[], atau untuk menyempitkan parameter searchElement untuk hanya memasukkan aksara yang dibenarkan. Pengubahsuaian ini memastikan keserasian jenis, menghalang sebarang kemungkinan ralat atau ketidakkonsistenan berkaitan jenis.
Atas ialah kandungan terperinci Mengapa TypeScript Melemparkan Ralat Apabila Menggunakan `Array.prototype.includes()` dengan Pelbagai Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!