簡體   English   中英

如何編寫針對 null 或 undefined 進行測試的類型保護函數?

[英]How to write a type guard function that tests against null or undefined?

在將代碼從流移動到 js 時,我具有以下功能:

export function nullOrUndefined(val: mixed): boolean %checks {
    return val === null || val === undefined;
}

可以很容易地移動到打字稿(改變混合到unknown

但是它的用法如下:

const mappedData: Map<string, string> = new Map([["key", "value"]]);
const value: undefined|string = mappedData.get("key"); 
//would be undefined if an invalid key is used
const sentence: string = "The key is: " + (nullOrUndefined(value) ? " not found" : value)
console.log(sentence);

在流程中, %checks確保解析器理解該函數有助於類型縮小/保護。 我將如何在打字稿中做到這一點?

編輯:是的,我知道這幾乎總是可以使用空合並運算符來完成,盡管這是來自比該運算符更舊的代碼庫。

您可以使用這樣的語法來創建類型保護:

export function nullOrUndefined(a: unknown): a is null | undefined {
  return a == null;
}

而且,順便說一下,雖然==通常不鼓勵=== ,但==null是同時測試nullundefined的好方法。

暫無
暫無

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

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