首頁 >web前端 >js教程 >以下是一些標題選項,請記住問題格式和文章的重點: 簡短且重點突出: * 為什麼 TypeScript 會抱怨 Array.includes() 中的參數輸入是否允許

以下是一些標題選項,請記住問題格式和文章的重點: 簡短且重點突出: * 為什麼 TypeScript 會抱怨 Array.includes() 中的參數輸入是否允許

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 11:19:30442瀏覽

Here are a few title options, keeping in mind the question format and the article's focus:

Short & Focused:

* Why Does TypeScript Complain About Argument Typing in Array.includes() with AllowedChars?
* TypeScript Type Safety: How Does Array.includes()

Array.prototype.includes(searchElement) 參數類型和數組元素相容性

TypeScript 對數組操作強制執行嚴格的類型規則,包括數組.prototype.includes() 方法。此方法將搜尋元素與陣列元素進行比較以確定包含內容。然而,搜尋元素與陣列元素類型相符的嚴格類型要求有時會引發問題。

問題描述

使用者定義了表示字元的資料型別AllowedChars “x”、“y”、「z」。使用此類型建立了一個陣列 exampleArr。然而,當嘗試使用 Array.prototype.includes() 方法檢查鍵盤事件按鍵是否在陣列中時,TypeScript 編譯器抱怨參數類型「string」無法指派給類型AllowedChars。

為什麼參數型別與陣列元素型別相關聯?

Array.prototype.includes() 的參數是與陣列元素進行比較的搜尋元素。由於以下原因,TypeScript 希望此參數與數組元素的類型匹配:

  • 類型安全: 強制執行嚴格類型化可確保僅比較正確類型的元素
  • 效能最佳化: TypeScript 根據已知類型最佳化比較,讓搜尋過程更有效率。

解析選項

要解決此類型問題,有多種方法:

  • 斷言類型:
  • 斷言類型:
  • 斷言類型:
斷言類型: 使用類型斷言,就像(exampleArr.includes(e. key as AllowedChars)) {} 忽略類型檢查並假設搜尋元素有效。但是,不建議使用這種方法,因為它可能會導致潛在的轉換錯誤。 聲明合併:修改全域 TypeScript 聲明以允許 Array.prototype.includes() 的超類型是一項複雜的工作方法。它涉及使用條件類型來模擬超類型約束。 擴大數組類型:將 exampleArr 更改為唯讀 string[] 擴大其類型以允許字串輸入。它確保可以安全地將字串搜尋元素與陣列元素進行比較。在使用 Array.prototype.includes() 之前轉換為唯讀 string[] 可以達到相同的結果。

以上是以下是一些標題選項,請記住問題格式和文章的重點: 簡短且重點突出: * 為什麼 TypeScript 會抱怨 Array.includes() 中的參數輸入是否允許的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn