Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum gibt TypeScript einen Fehler aus, wenn „Array.prototype.includes()' mit verschiedenen Typen verwendet wird?

Susan Sarandon
Freigeben: 2024-10-27 02:31:03
Original
318 Leute haben es durchsucht

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

Warum Array.prototype.includes() passende Typen für Array-Elemente erfordert

Die Methode Array.prototype.includes() soll ermitteln wenn ein Array ein bestimmtes Element enthält. Um genaue und zuverlässige Ergebnisse zu gewährleisten, muss der Parameter „searchElement“ mit dem Typ der Array-Elemente übereinstimmen. Diese Typsicherheit verhindert fehlerhafte Vergleiche und wahrt die Integrität der Datenintegrität des Arrays.

Beachten Sie den folgenden Codeausschnitt:

<code class="js">type AllowedChars = 'x' | 'y' | 'z';
const exampleArr: AllowedChars[] = ['x', 'y', 'z'];

function checkKey(e: KeyboardEvent) { 
    if (exampleArr.includes(e.key)) { 
        // ...
    } 
}</code>
Nach dem Login kopieren

Der TypeScript-Compiler meldet einen Fehler, der darauf hinweist, dass der e.key Der Parameter stimmt nicht mit dem Typ „AllowedChars“ der exampleArr-Elemente überein. Dieser Fehler liegt daran, dass die Methode Includes() davon ausgeht, dass das Suchelement denselben Typ wie die Array-Elemente hat.

Es mag widersprüchlich erscheinen, da Array.prototype.includes() einen booleschen Wert und keine Zuweisung zurückgibt, wie z Der Fehler deutet darauf hin. Allerdings spielt hier das Typsystem von Typescript eine entscheidende Rolle.

Das Einschließen eines Elements in das Array impliziert, dass der Typ des Elements mit den Elementen des Arrays übereinstimmt. Im bereitgestellten Beispiel ist der Typ des Parameters „e.key“ jedoch „string“, während die Elemente „exampleArr“ vom Typ „AllowedChars“ sind. Diese Nichtübereinstimmung erfordert Typzusicherungen oder Typerweiterungen, um die Erwartungen des TypeScript-Typsystems außer Kraft zu setzen.

Der einfachste und am meisten empfohlene Ansatz zur Lösung dieses Problems besteht darin, den Typ von exampleArr auf den breiteren Typ string[] zu erweitern, oder um den Parameter „searchElement“ so einzuschränken, dass nur zulässige Zeichen enthalten sind. Diese Änderungen stellen die Typkompatibilität sicher und verhindern mögliche typbezogene Fehler oder Inkonsistenzen.

Das obige ist der detaillierte Inhalt vonWarum gibt TypeScript einen Fehler aus, wenn „Array.prototype.includes()' mit verschiedenen Typen verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!