Mengapa TypeScript Melemparkan Ralat Apabila Menggunakan `Array.prototype.includes()` dengan Pelbagai Jenis?

Susan Sarandon
Lepaskan: 2024-10-27 02:31:03
asal
318 orang telah melayarinya

Why Does TypeScript Throw an Error When Using `Array.prototype.includes()` with Different Types?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!