![](/img/trans.png)
[英]Can I solve this one without strictNullChecks: false?
[英]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 編譯器執行額外的檢查並發出額外的警告。 然而,它實際上改變了類型檢查器的底層行為以及null
和undefined
類型的語義。 根據TypeScript 指南,
在嚴格的 null 檢查模式下,null 和 undefined 值不在每種類型的域中,並且只能分配給它們自己和任何類型(一個例外是 undefined 也可分配給 void)。 所以,而 T 和 T | undefined 在常規類型檢查模式下被認為是同義詞(因為 undefined 被認為是任何 T 的子類型),在嚴格類型檢查模式下它們是不同的類型,並且只有 T | undefined 允許未定義的值。 T 與 T 的關系也是如此 | null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.