繁体   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