Heim >Web-Frontend >js-Tutorial >Warum gibt TypeScript einen Fehler aus, wenn „Array.prototype.includes()' mit verschiedenen Typen verwendet wird?
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>
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!