摘要:因為標志在時添加的,所以它的使用還沒有那么廣泛。截至年月,項目和項目中使用了該標志,而或都沒有使用該標志。如果執行條件檢查可以推斷某些內容是非空的。然而,對于三元運算符來說,不幸的是情況并非如此。
原文2017年7月發布并于2017年9月更新我應該使用strictnullcheck TypeScript編譯器標志嗎?strictnullcheck(嚴格的null檢查)
空指針是最常見的bug之一,而通過strictnullcheck TypeScript編譯器標志可以在很大程度上避免空指針。因為strictnullcheck標志在TypeScript 2時添加的,所以它的使用還沒有那么廣泛。截至2017年9月,Angular項目和typeORM項目中使用了該標志,而VSCode、RxJS、ionor或Babylon.js都沒有使用該標志。此外,新建一個TypeScript項目時strictnullcheck并不默認開啟,以保證向后兼容,并保持TypeScript是JavaScript的超集。
如果你準備編寫一個新TypeScript項目,或者有時間將strictnullcheck標志引入到現有的項目中,我建議你這樣做。你的應用會因此具備更高的安全性,使用嚴格的null檢查也不會打亂代碼,因應用程序本應包含這些檢查。缺點是新開發人員還需要學習一個概念。對我來說,利大于弊,所以我建議打開嚴格的空檢查。
嚴格的空檢查的一個例子是:
tsconfig.json
{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": true, "strictNullChecks": true, "outDir": "./dist" }, "include": [ "src/**/*" ] }
src/user.ts
interface User { name: string; age?: number; } function printUserInfo(user: User) { console.log(`${user.name}, ${user.age.toString()}`) // => error TS2532: Object is possibly "undefined". console.log(`${user.name}, ${user.age!.toString()}`) // => OK, you confirm that you"re sure user.age is non-null. // => 好的,你已經確認user.age是非空的。 if (user.age != null) { console.log(`${user.name}, ${user.age.toString()}`) } // => OK, the if-condition checked that user.age is non-null. // => 好的,if條件檢查了user.age是非空的。 console.log(user.name + ", " + user.age != null ? user.age.toString() : "age unknown"); // => Unfortunately TypeScript can"t infer that age is non-null here. // => 不幸的是TypeScript不能在這里推斷年齡是非空的。(譯注:截止至2019年7月16日,TS依舊會報此錯) }
如上所述:
感嘆號表示你確信(例如,通過在代碼中的某個地方執行檢查)可能為空的變量實際上是非空的。
如果執行If條件檢查, TypeScript可以推斷某些內容是非空的。
然而,對于三元運算符來說,不幸的是情況并非如此。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/110288.html
摘要:首先聲明這篇文章是想說明一下最新版本的的新特性帶來的極大的開發體驗提升而不是如何利用開發應用這個特性就是對的支持在的中有說明具體可以參考這里在版本之前我們在開發應用尤其是在配合一類庫的時候經常用到諸如之類的封裝而這些函數其實都可以用裝飾器的 首先聲明, 這篇文章是想說明一下最新版本的 TypeScript(3.0) 的新特性帶來的極大的 React 開發體驗提升. 而不是如何利用 Ty...
摘要:本套課程包含兩大部分,第一部分是基礎部分,也是重要部分,參考官方文檔結構,針對內容之間的關聯性和前后順序進行合理調整。 showImg(https://segmentfault.com/img/bVbpBA0?w=1460&h=400); 講師簡介: iview 核心開發者,iview-admin 作者,百萬級虛擬渲染表格組件 vue-bigdata-table 作者。目前就職于知名互...
摘要:基本類型在中,提供了一下基本數據類型布爾類型數據類型字符串類型數組類型元組類型枚舉類型任意值類型和類型類型其中元組枚舉任意值類型和類型是有別與的特有類型。布爾類型布爾類型是最簡單的數據類型,只有和兩種值。 學習Angular 2 , 《揭秘Angular 2》讀書筆記。Angular2 選擇 TypeScript 作為其官方最主要的構建語音,這意味著掌握 TypeScript 語音將更...
摘要:原文地址原文作者譯者校對者和其他人有一些關于比較好的博文,跟隨這些博文,我最近開始使用。今天,我將展示如何從零開始建立一個工程,以及如何使用管理構建過程。我也將陳述關于的第一印象,尤其是使用和。 原文地址:Getting started with TypeScript and React 原文作者:Jack_Franklin 譯者:luxj 校對者:veizz Tom Dale...
摘要:為了由簡入繁,不妨將這些類型劃分為基本類型復合類型。以下將漸進式的對的這些類型進行了解。實際上,有一種屬性描述對象,是通過獲取的。但無論如何,類型檢查是可以排除大部分錯誤的。在函數的類型聲明中,繼續來鞏固這條規則的寫法。 幾個月前把 ES6 的特性都過了一遍,收獲頗豐。現在繼續來看看 TypesScript(下文簡稱為 TS)。限于經驗,本文一些總結如有不當,歡迎指正。 概述 官網有這...
閱讀 850·2021-11-16 11:56
閱讀 1671·2021-11-16 11:45
閱讀 3120·2021-10-08 10:13
閱讀 4109·2021-09-22 15:27
閱讀 733·2019-08-30 11:03
閱讀 651·2019-08-30 10:56
閱讀 953·2019-08-29 15:18
閱讀 1746·2019-08-29 14:05