簡體   English   中英

TypeScript:即使 strictNullChecks 為假,我是否可以檢查類型是否包含未定義?

[英]TypeScript: Can I check if a type contains undefined even when strictNullChecks is false?

我們在 redux-starter-kit 中遇到了一個問題,其中庫的用戶禁用了 strictNullChecks,並且我們的類型測試之一是短路,返回不同情況的類型。

此測試應返回 True-Parameter 或 False-Parameter,具體取決於 P 參數是否包含 undefined。

這是當前代碼:

type IfMaybeUndefined<P, True, False> = [undefined] extends [P] ? True : False;

所以我希望這兩個都返回“是”:

IfMayBeUndefined<number, "no", "yes">
IfMayBeUndefined<number|undefined, "yes", "no">

現在我問自己是否有另一種方法來測試它,即使使用 strictNullChecks: false

我不相信這是可能的。

“strictNullChecks”這個名稱有點誤導,因為它可能暗示它只是指示 TypeScript 編譯器執行額外的檢查並發出額外的警告。 然而,它實際上改變了類型檢查器的底層行為以及nullundefined類型的語義。 根據TypeScript 指南

在嚴格的 null 檢查模式下,null 和 undefined 值不在每種類型的域中,並且只能分配給它們自己和任何類型(一個例外是 undefined 也可分配給 void)。 所以,而 T 和 T | undefined 在常規類型檢查模式下被認為是同義詞(因為 undefined 被認為是任何 T 的子類型),在嚴格類型檢查模式下它們是不同的類型,並且只有 T | undefined 允許未定義的值。 T 與 T 的關系也是如此 | null。

暫無
暫無

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

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