Berikut ialah beberapa pilihan tajuk, semuanya dalam format soalan: Fokus pada Jenis Keselamatan: * Mengapa TypeScript Mengehadkan Argumen Jenis Array.prototype.includes()? * Bagaimana Saya Boleh Menggunakan Array.prototype.includes()

Barbara Streisand
Lepaskan: 2024-10-26 22:04:03
asal
825 orang telah melayarinya

Here are a few title options, all in the question format:

Focus on Type Safety:

* Why Does TypeScript Restrict Array.prototype.includes() Type Arguments? 
* How Can I Use Array.prototype.includes() With Supertypes in TypeScript?
* TypeScript Type Safety

Sistem Jenis dan Array.prototype.includes()

TypeScript menguatkuasakan keselamatan jenis, yang boleh membawa kepada ralat apabila menggunakan fungsi seperti Array. prototype.includes(). Fungsi ini menjangkakan hujah searchElement mempunyai jenis yang sama seperti elemen tatasusunan. Walau bagaimanapun, dalam senario tertentu, input boleh mempunyai jenis yang berbeza, yang menimbulkan persoalan mengapa hujah jenis dikekang.

Pustaka TypeScript menganggap bahawa parameter searchElement ditaip dengan ketat untuk memadankan elemen tatasusunan. Walaupun andaian ini berlaku dalam kebanyakan kes, ia boleh menjadi masalah apabila berurusan dengan supertype. Dalam kes sedemikian, pengisytiharan TypeScript standard mungkin perlu ditindih untuk membenarkan supertype.

Overriding Array.prototype.includes()

Satu pendekatan adalah untuk mengatasi secara setempat pengisytiharan perpustakaan standard melalui penggabungan pengisytiharan. TypeScript tidak mempunyai kekangan supertype, jadi jenis bersyarat digunakan untuk mencontohinya:

<code class="typescript">declare global {
  interface Array<T> {
    includes<U extends (T extends U ? unknown : never)>(
      searchElement: U,
      fromIndex?: number
    ): boolean;
  }
}</code>
Salin selepas log masuk

Dengan pengisytiharan ini, kod asal akan berfungsi tanpa ralat:

<code class="typescript">if (exampleArr.includes(e.key)) {} // okay</code>
Salin selepas log masuk

Jenis Tatasusunan Melebar

Penyelesaian yang lebih mudah ialah meluaskan jenis exampleArr kepada rentetan baca sahaja[]:

<code class="typescript">const stringArr: readonly string[] = exampleArr; // no assertion

if (stringArr.includes(e.key)) {} // okay</code>
Salin selepas log masuk

Pelebaran kepada rentetan baca sahaja[] membenarkan input mempunyai jenis yang berbeza tanpa menjejaskan jenis keselamatan. Sebaliknya, pelebaran kepada rentetan[] berkemungkinan tidak selamat disebabkan oleh rawatan TypeScript yang tidak mantap terhadap kovarians tatasusunan.

Atas ialah kandungan terperinci Berikut ialah beberapa pilihan tajuk, semuanya dalam format soalan: Fokus pada Jenis Keselamatan: * Mengapa TypeScript Mengehadkan Argumen Jenis Array.prototype.includes()? * Bagaimana Saya Boleh Menggunakan Array.prototype.includes(). 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!