簡體   English   中英

打字稿忽略 null 或 undefined 作為函數返回的可能性

[英]Typescript is ignoring null or undefined as function return possibility

我有一個函數,它應該返回 LoginResponse 類型或 null,但 Typescript lint 忽略了 null 的可能性,只是將 LoginResponse 顯示為可能的值。

export const getSession = (): LoginResponse | null => {
  return null
}

在此處輸入圖片說明

我也嘗試使用 undefined 沒有成功。 有什么想法嗎?

TLDR;

tsconfig.json:

{
  "compilerOptions": {
    "strict": true
  }
}

命令行: tsc --strict

默認情況下,TypeScript 將nullundefined視為其他類型的所有類型的子類型。 也就是說,一切都是可以為空的,也可以不定義。

給定兩種類型, BaseSub ,其中Sub extends Base ,它們的並集Base | Sub Base | Sub ,相當於Base 因此,由於null是所有類型的子類型,因此它是LoginResponse的子類型,使得LoginResponse | null LoginResponse | null相當於LoginResponse

要讓 TypeScript 將nullundefined視為不同的類型,與所有其他類型無關,您需要啟用--strictNullChecks ,這是一個強大的 TypeChecking 選項。

配置文件

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

或者,在命令行上, tsc --strictNullChecks.

--strictNullChecks選項是強大的類型檢查選項的嚴格系列的一部分,因此我們可以使用--strict ,啟用所有強烈推薦的選項,不僅僅是因為它捕獲更多錯誤並為這些錯誤提供更多語義,而是因為它顯着提高了類型推斷的質量,使許多應該直觀地工作的代碼實際上工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM