中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

手寫TypeScript時常犯的錯誤有哪些

發布時間:2022-10-22 15:01:58 來源:億速云 閱讀:84 作者:iii 欄目:編程語言

這篇“手寫TypeScript時常犯的錯誤有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“手寫TypeScript時常犯的錯誤有哪些”文章吧。

1.沒有使用嚴格模式

通過使用沒有嚴格模式的 tsconfig.json。

手寫TypeScript時常犯的錯誤有哪些

使用嚴格模式后。

手寫TypeScript時常犯的錯誤有哪些

我們為什么要使用嚴格模式?

嚴格模式可以消除語法里一些不合理,不嚴謹的地方,可以讓TS往更合理、更安全、更嚴謹的方向去發展: 通過將一些TS的靜默錯誤更改為拋出錯誤,消除了TS的一些靜默錯誤,能更加有效保障代碼運行的安全; 提高編譯器效率,增加運行速度; 禁止一些可能在ECMAScript未來版本中定義的語法。

2. 使用 || 確定默認值

手寫TypeScript時常犯的錯誤有哪些

那它應該是什么樣子的呢?

使用最新的??運算符或者最好是在參數級別定義返回值。

手寫TypeScript時常犯的錯誤有哪些

??運算符去年才被引入,如果在長函數的中間使用值,可能很難將它們定義為參數默認值。

?? 與 || 不同,它只返回 null 或 undefined,而不是所有 falsy 值。

3.使用any作為類型

當我們不確定數據類型的時候,會使用any類型的數據。

手寫TypeScript時常犯的錯誤有哪些

在所有我們不確定類型的情況下,我們都應該使用unknown。

手寫TypeScript時常犯的錯誤有哪些

為什么要這么做呢?

any 很簡單,因為它從根本上禁用了所有類型檢查。通常,即使在官方類型中也使用 any(例如,上面示例中的 response.json() 被 TypeScript 團隊鍵入為 Promise<any>)。

為什么不能用any?

它從根本上禁用所有類型檢查。通過 any 進入的所有值都將完全放棄任何類型檢查。這可能會變得非常難以捕捉錯誤,因為只有當我們對類型結構的假設符合運行時代碼時,代碼才會失敗。

4. val 作為 SomeType

強制告訴編譯器它無法推斷的類型。

手寫TypeScript時常犯的錯誤有哪些

這就是類型守衛的用途。

手寫TypeScript時常犯的錯誤有哪些

當我們想要從 JavaScript 轉換為 TypeScript 時,現有的代碼庫經常對 TypeScript 編譯器無法自動得出的類型做出假設。在這些情況下,使用快速 as SomeOtherType 可以加快轉換速度,而無需放松 tsconfig 中的設置。

即使現在可以保存斷言,但當有人移動代碼時,這可能會改變。類型保護將確保所有檢查都是明確的。

5. any在測試用例中的表現

在編寫測試時

手寫TypeScript時常犯的錯誤有哪些

如果需要為測試模擬數據,需要將模擬邏輯移動到我們模擬的旁邊并使其可重用。

手寫TypeScript時常犯的錯誤有哪些

雖然在尚未有很好的測試覆蓋率的代碼庫中編寫測試時,經常會出現復雜的大數據結構,但測試中的特定功能只需要其中的一部分。短期內無需擔心其他屬性更簡單。

最近一次是當其中一個屬性發生變化時,我們必須在所有測試中更改它而不是一個中心位置。此外,在某些情況下,被測代碼依賴于我們之前認為不重要的屬性,然后必須更新該功能的所有測試。

6. 可選屬性

將屬性定義為有時存在,有時不存在的可選屬性。

手寫TypeScript時常犯的錯誤有哪些

清楚地表達,模型哪些組合存在,哪些不存在。

手寫TypeScript時常犯的錯誤有哪些

將屬性定義為可選而不是劃分類型更容易并且生成的代碼更少。它還需要對正在開發的產品有充分的了解,并且可以在對產品的假設發生變化時限制代碼的使用。

類型系統的最大好處是它們可以用編譯時檢查代替運行時檢查。通過更多的快速輸入,可以在編譯時檢查可能被忽視的錯誤。

7. 使用一個字母作為泛型參數

用一個字母給作為名稱,比如常用的T作為泛型名稱!

手寫TypeScript時常犯的錯誤有哪些

應該給出一個完整的描述性類型名稱。

手寫TypeScript時常犯的錯誤有哪些

我猜很多人有這種壞習慣,因為即使是官方文檔也使用一個字母的名稱。按 T 代替寫全名可以更快地鍵入,并且不需要考慮太多。

泛型類型是變量,就像其他變量一樣。當 IDE 開始向我們展示這些技術性時,我們已經放棄了在變量名稱中描述變量技術性的想法。例如。我們通常只寫 const name = &lsquo;Daniel&rsquo; 而不是 const strName = &lsquo;Daniel&rsquo;。此外,一個字母的變量名通常會引起轟動,因為如果不看它們的聲明,可能很難翻譯它們的含義。

8.非布爾檢查

通過將值直接傳遞給 if 語句來檢查值是否已定義。

手寫TypeScript時常犯的錯誤有哪些

我們可以明確檢查我們關心的情況。

手寫TypeScript時常犯的錯誤有哪些

用簡短的方式編寫檢查看起來更簡潔,并且可以讓我們避免思考我們真正想要檢查的內容。

也許我們應該考慮一下我們真正想要檢查的內容。例如,上面給出的示例以不同的方式處理 countOfNewMessages 為 0 的情況。

9. !!操作符

將非布爾值轉換為布爾值。

手寫TypeScript時常犯的錯誤有哪些

明確檢查我們關心的狀況。

手寫TypeScript時常犯的錯誤有哪些

對我們中的一些人來說,理解很簡單。它看起來簡短而簡潔,如果您已經熟悉它,那么您就會知道它是關于什么的。這是將任何值轉換為布爾值的簡便方法。尤其是在代碼庫中,假值(如 nullundefined 和“”)之間沒有明確的語義分離。

使用 !!通過宣傳內部知識來混淆代碼的真正含義。這使得新開發人員更不容易訪問代碼庫,無論是一般開發的新手,還是 JavaScript 的新手。引入細微的錯誤也很容易。來自“非布爾布爾檢查”的 countOfNewMessages 為 0 的問題仍然存在 !!

以上就是關于“手寫TypeScript時常犯的錯誤有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁安市| 桓仁| 佛冈县| 恩施市| 庆元县| 南丹县| 靖安县| 密山市| 赣榆县| 海林市| 安国市| 马关县| 龙陵县| 隆尧县| 那曲县| 莆田市| 安龙县| 伊金霍洛旗| 玛多县| 华安县| 阳西县| 武宣县| 兴安县| 大名县| 黄骅市| 侯马市| 健康| 肃南| 青铜峡市| 昌邑市| 平南县| 泸水县| 雷山县| 晋州市| 炉霍县| 博白县| 花莲县| 彰武县| 收藏| 遂溪县| 基隆市|