摘要:因為標(biāo)志在時添加的,所以它的使用還沒有那么廣泛。截至年月,項目和項目中使用了該標(biāo)志,而或都沒有使用該標(biāo)志。如果執(zhí)行條件檢查可以推斷某些內(nèi)容是非空的。然而,對于三元運算符來說,不幸的是情況并非如此。
原文2017年7月發(fā)布并于2017年9月更新我應(yīng)該使用strictnullcheck TypeScript編譯器標(biāo)志嗎?strictnullcheck(嚴(yán)格的null檢查)
空指針是最常見的bug之一,而通過strictnullcheck TypeScript編譯器標(biāo)志可以在很大程度上避免空指針。因為strictnullcheck標(biāo)志在TypeScript 2時添加的,所以它的使用還沒有那么廣泛。截至2017年9月,Angular項目和typeORM項目中使用了該標(biāo)志,而VSCode、RxJS、ionor或Babylon.js都沒有使用該標(biāo)志。此外,新建一個TypeScript項目時strictnullcheck并不默認(rèn)開啟,以保證向后兼容,并保持TypeScript是JavaScript的超集。
如果你準(zhǔn)備編寫一個新TypeScript項目,或者有時間將strictnullcheck標(biāo)志引入到現(xiàn)有的項目中,我建議你這樣做。你的應(yīng)用會因此具備更高的安全性,使用嚴(yán)格的null檢查也不會打亂代碼,因應(yīng)用程序本應(yīng)包含這些檢查。缺點是新開發(fā)人員還需要學(xué)習(xí)一個概念。對我來說,利大于弊,所以我建議打開嚴(yán)格的空檢查。
嚴(yán)格的空檢查的一個例子是:
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. // => 好的,你已經(jīng)確認(rèn)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依舊會報此錯) }
如上所述:
感嘆號表示你確信(例如,通過在代碼中的某個地方執(zhí)行檢查)可能為空的變量實際上是非空的。
如果執(zhí)行If條件檢查, TypeScript可以推斷某些內(nèi)容是非空的。
然而,對于三元運算符來說,不幸的是情況并非如此。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/110288.html
摘要:首先聲明這篇文章是想說明一下最新版本的的新特性帶來的極大的開發(fā)體驗提升而不是如何利用開發(fā)應(yīng)用這個特性就是對的支持在的中有說明具體可以參考這里在版本之前我們在開發(fā)應(yīng)用尤其是在配合一類庫的時候經(jīng)常用到諸如之類的封裝而這些函數(shù)其實都可以用裝飾器的 首先聲明, 這篇文章是想說明一下最新版本的 TypeScript(3.0) 的新特性帶來的極大的 React 開發(fā)體驗提升. 而不是如何利用 Ty...
摘要:本套課程包含兩大部分,第一部分是基礎(chǔ)部分,也是重要部分,參考官方文檔結(jié)構(gòu),針對內(nèi)容之間的關(guān)聯(lián)性和前后順序進行合理調(diào)整。 showImg(https://segmentfault.com/img/bVbpBA0?w=1460&h=400); 講師簡介: iview 核心開發(fā)者,iview-admin 作者,百萬級虛擬渲染表格組件 vue-bigdata-table 作者。目前就職于知名互...
摘要:基本類型在中,提供了一下基本數(shù)據(jù)類型布爾類型數(shù)據(jù)類型字符串類型數(shù)組類型元組類型枚舉類型任意值類型和類型類型其中元組枚舉任意值類型和類型是有別與的特有類型。布爾類型布爾類型是最簡單的數(shù)據(jù)類型,只有和兩種值。 學(xué)習(xí)Angular 2 , 《揭秘Angular 2》讀書筆記。Angular2 選擇 TypeScript 作為其官方最主要的構(gòu)建語音,這意味著掌握 TypeScript 語音將更...
摘要:原文地址原文作者譯者校對者和其他人有一些關(guān)于比較好的博文,跟隨這些博文,我最近開始使用。今天,我將展示如何從零開始建立一個工程,以及如何使用管理構(gòu)建過程。我也將陳述關(guān)于的第一印象,尤其是使用和。 原文地址:Getting started with TypeScript and React 原文作者:Jack_Franklin 譯者:luxj 校對者:veizz Tom Dale...
摘要:為了由簡入繁,不妨將這些類型劃分為基本類型復(fù)合類型。以下將漸進式的對的這些類型進行了解。實際上,有一種屬性描述對象,是通過獲取的。但無論如何,類型檢查是可以排除大部分錯誤的。在函數(shù)的類型聲明中,繼續(xù)來鞏固這條規(guī)則的寫法。 幾個月前把 ES6 的特性都過了一遍,收獲頗豐。現(xiàn)在繼續(xù)來看看 TypesScript(下文簡稱為 TS)。限于經(jīng)驗,本文一些總結(jié)如有不當(dāng),歡迎指正。 概述 官網(wǎng)有這...
閱讀 841·2021-11-16 11:56
閱讀 1654·2021-11-16 11:45
閱讀 3109·2021-10-08 10:13
閱讀 4094·2021-09-22 15:27
閱讀 727·2019-08-30 11:03
閱讀 643·2019-08-30 10:56
閱讀 946·2019-08-29 15:18
閱讀 1737·2019-08-29 14:05