【发布时间】:2019-02-05 06:54:48
【问题描述】:
我想创建一个函数来检查变量是否不是null 或undefined。
我想要的是检查后变量的安全类型。
在我的上一个项目中,我这样做了:
function isDefined<T>(value: T): value is T {
return <T>value !== undefined && <T>value !== null;
}
但是为什么它在我当前的项目中不起作用,可能是由于不同的 tsconfig - 我可以在 isDefined(foo) 之后看到许多错误,例如“变量可能为空”(项目使用相同的打字稿版本 - "2.7.2" )
我还看到了另一种方法,这是可行的,但是……在术语或类型上有点奇怪。
function isDefined(value: any): value is {} | string | number | boolean {
return value !== undefined && value !== null;
}
问题:如何创建isDefined来保存变量的类型?
UPD1:使用示例:
const foo: 字符串 |未定义 = 'foo';
function getFoo(foo: String): void {
console.log(foo);
}
function getBar(foo: string | undefined) {
if (isDefined(foo)) {
getFoo(foo); // getFoo still think that foo maight be undefined
}
}
export function isDefined<T>(value: T): value is T {
return <T>value !== undefined && <T>value !== null;
}
【问题讨论】:
-
你能粘贴一个给你错误的行吗?
标签: javascript typescript typescript-generics