如何编写针对 null 或 undefined 进行测试的类型保护函数?
How to write a type guard function that tests against null or undefined?
在将代码从 flow 移动到 js 时,我有以下功能:
export function nullOrUndefined(val: mixed): boolean %checks {
return val === null || val === undefined;
}
可以很容易地移动到打字稿(将 mixed 更改为 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
确保解析器理解函数有助于类型 narrowing/guarding。
我将如何在打字稿中做到这一点?
编辑:是的,我知道这几乎总是可以通过空合并运算符来完成,尽管这是来自比该运算符更早的代码库。
您可以使用这样的语法来创建类型保护:
export function nullOrUndefined(a: unknown): a is null | undefined {
return a == null;
}
顺便说一下,虽然 ==
通常不鼓励 ===
,==
和 null
是测试两者的好方法 null
和 undefined
同时。
在将代码从 flow 移动到 js 时,我有以下功能:
export function nullOrUndefined(val: mixed): boolean %checks {
return val === null || val === undefined;
}
可以很容易地移动到打字稿(将 mixed 更改为 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
确保解析器理解函数有助于类型 narrowing/guarding。
我将如何在打字稿中做到这一点?
编辑:是的,我知道这几乎总是可以通过空合并运算符来完成,尽管这是来自比该运算符更早的代码库。
您可以使用这样的语法来创建类型保护:
export function nullOrUndefined(a: unknown): a is null | undefined {
return a == null;
}
顺便说一下,虽然 ==
通常不鼓励 ===
,==
和 null
是测试两者的好方法 null
和 undefined
同时。