【发布时间】:2022-02-12 00:40:53
【问题描述】:
假设我想验证一个变量既不是空值也不是未定义的。
我真的会这样做:
let foo: string | undefined | null;
if (foo !== undefined && foo !== null) {
// foo is a string
}
现在,我想创建一个可以同时对多个变量进行相同检查的函数。
我试过了:
const isSet = <T>(...values: T[]): values is Exclude<T, null | undefined>[] => {
return values.every(value => value !== undefined && value !== null)
};
但是,我收到一个 Typescript 错误 “类型谓词无法引用其余参数”,这是有道理的。
你有什么建议?
【问题讨论】:
-
这个函数的返回类型不应该是“boolean”吗?
-
@8ns,确实如此;这称为类型保护。
-
谢谢@Connor Low 我会去看看!
标签: typescript