成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TypeScript最佳實(shí)踐:是否使用strictnullcheck

張漢慶 / 1420人閱讀

摘要:因?yàn)闃?biāo)志在時(shí)添加的,所以它的使用還沒(méi)有那么廣泛。截至年月,項(xiàng)目和項(xiàng)目中使用了該標(biāo)志,而或都沒(méi)有使用該標(biāo)志。如果執(zhí)行條件檢查可以推斷某些內(nèi)容是非空的。然而,對(duì)于三元運(yùn)算符來(lái)說(shuō),不幸的是情況并非如此。

原文2017年7月發(fā)布并于2017年9月更新

strictnullcheck(嚴(yán)格的null檢查)

我應(yīng)該使用strictnullcheck TypeScript編譯器標(biāo)志嗎?

空指針是最常見(jiàn)的bug之一,而通過(guò)strictnullcheck TypeScript編譯器標(biāo)志可以在很大程度上避免空指針。因?yàn)?b>strictnullcheck標(biāo)志在TypeScript 2時(shí)添加的,所以它的使用還沒(méi)有那么廣泛。截至2017年9月,Angular項(xiàng)目和typeORM項(xiàng)目中使用了該標(biāo)志,而VSCode、RxJS、ionor或Babylon.js都沒(méi)有使用該標(biāo)志。此外,新建一個(gè)TypeScript項(xiàng)目時(shí)strictnullcheck并不默認(rèn)開(kāi)啟,以保證向后兼容,并保持TypeScript是JavaScript的超集。

如果你準(zhǔn)備編寫(xiě)一個(gè)新TypeScript項(xiàng)目,或者有時(shí)間將strictnullcheck標(biāo)志引入到現(xiàn)有的項(xiàng)目中,我建議你這樣做。你的應(yīng)用會(huì)因此具備更高的安全性,使用嚴(yán)格的null檢查也不會(huì)打亂代碼,因應(yīng)用程序本應(yīng)包含這些檢查。缺點(diǎn)是新開(kāi)發(fā)人員還需要學(xué)習(xí)一個(gè)概念。對(duì)我來(lái)說(shuō),利大于弊,所以我建議打開(kāi)嚴(yán)格的空檢查。

嚴(yán)格的空檢查的一個(gè)例子是:

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依舊會(huì)報(bào)此錯(cuò))
}

如上所述:

感嘆號(hào)表示你確信(例如,通過(guò)在代碼中的某個(gè)地方執(zhí)行檢查)可能為空的變量實(shí)際上是非空的。

如果執(zhí)行If條件檢查, TypeScript可以推斷某些內(nèi)容是非空的。

然而,對(duì)于三元運(yùn)算符來(lái)說(shuō),不幸的是情況并非如此。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/110288.html

相關(guān)文章

  • TypeScript 3.0 + React + Redux 最佳實(shí)踐

    摘要:首先聲明這篇文章是想說(shuō)明一下最新版本的的新特性帶來(lái)的極大的開(kāi)發(fā)體驗(yàn)提升而不是如何利用開(kāi)發(fā)應(yīng)用這個(gè)特性就是對(duì)的支持在的中有說(shuō)明具體可以參考這里在版本之前我們?cè)陂_(kāi)發(fā)應(yīng)用尤其是在配合一類庫(kù)的時(shí)候經(jīng)常用到諸如之類的封裝而這些函數(shù)其實(shí)都可以用裝飾器的 首先聲明, 這篇文章是想說(shuō)明一下最新版本的 TypeScript(3.0) 的新特性帶來(lái)的極大的 React 開(kāi)發(fā)體驗(yàn)提升. 而不是如何利用 Ty...

    CloudwiseAPM 評(píng)論0 收藏0
  • 新上課程推薦:TypeScript完全解讀(總26課時(shí))

    摘要:本套課程包含兩大部分,第一部分是基礎(chǔ)部分,也是重要部分,參考官方文檔結(jié)構(gòu),針對(duì)內(nèi)容之間的關(guān)聯(lián)性和前后順序進(jìn)行合理調(diào)整。 showImg(https://segmentfault.com/img/bVbpBA0?w=1460&h=400); 講師簡(jiǎn)介: iview 核心開(kāi)發(fā)者,iview-admin 作者,百萬(wàn)級(jí)虛擬渲染表格組件 vue-bigdata-table 作者。目前就職于知名互...

    caozhijian 評(píng)論0 收藏0
  • TypeScript入門(mén)-基本類型

    摘要:基本類型在中,提供了一下基本數(shù)據(jù)類型布爾類型數(shù)據(jù)類型字符串類型數(shù)組類型元組類型枚舉類型任意值類型和類型類型其中元組枚舉任意值類型和類型是有別與的特有類型。布爾類型布爾類型是最簡(jiǎn)單的數(shù)據(jù)類型,只有和兩種值。 學(xué)習(xí)Angular 2 , 《揭秘Angular 2》讀書(shū)筆記。Angular2 選擇 TypeScript 作為其官方最主要的構(gòu)建語(yǔ)音,這意味著掌握 TypeScript 語(yǔ)音將更...

    _ipo 評(píng)論0 收藏0
  • 翻譯 | 開(kāi)始使用 TypeScript 和 React

    摘要:原文地址原文作者譯者校對(duì)者和其他人有一些關(guān)于比較好的博文,跟隨這些博文,我最近開(kāi)始使用。今天,我將展示如何從零開(kāi)始建立一個(gè)工程,以及如何使用管理構(gòu)建過(guò)程。我也將陳述關(guān)于的第一印象,尤其是使用和。 原文地址:Getting started with TypeScript and React 原文作者:Jack_Franklin 譯者:luxj 校對(duì)者:veizz Tom Dale...

    superw 評(píng)論0 收藏0
  • JavaScript => TypeScript 入門(mén)

    摘要:為了由簡(jiǎn)入繁,不妨將這些類型劃分為基本類型復(fù)合類型。以下將漸進(jìn)式的對(duì)的這些類型進(jìn)行了解。實(shí)際上,有一種屬性描述對(duì)象,是通過(guò)獲取的。但無(wú)論如何,類型檢查是可以排除大部分錯(cuò)誤的。在函數(shù)的類型聲明中,繼續(xù)來(lái)鞏固這條規(guī)則的寫(xiě)法。 幾個(gè)月前把 ES6 的特性都過(guò)了一遍,收獲頗豐?,F(xiàn)在繼續(xù)來(lái)看看 TypesScript(下文簡(jiǎn)稱為 TS)。限于經(jīng)驗(yàn),本文一些總結(jié)如有不當(dāng),歡迎指正。 概述 官網(wǎng)有這...

    Tonny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<