逆 TypeScript 类型保护
Inverse TypeScript Type Guard
我正在使用 typescript
2.0.0 和 --strictNullChecks
以及以下类型保护:
function isNotOk(value: any): value is null | undefined {
if (typeof value === 'number') {
return !isFinite(value);
} else {
return value === null || value === undefined;
}
}
这会使 null
、undefined
、NaN
和 Infinite
无效。我想要一个相反的:
export function isOk(value: any): value is not null | undefined {
return !isNotOk(value);
}
当然,这个语法是行不通的。是否有已知的方法来完成此操作?
我偶然发现了答案;仿制药。像这样以相反的方式缩小:
function isOk<T>(value: T | null | undefined): value is T {
return !isNotOk(value);
}
我正在使用 typescript
2.0.0 和 --strictNullChecks
以及以下类型保护:
function isNotOk(value: any): value is null | undefined {
if (typeof value === 'number') {
return !isFinite(value);
} else {
return value === null || value === undefined;
}
}
这会使 null
、undefined
、NaN
和 Infinite
无效。我想要一个相反的:
export function isOk(value: any): value is not null | undefined {
return !isNotOk(value);
}
当然,这个语法是行不通的。是否有已知的方法来完成此操作?
我偶然发现了答案;仿制药。像这样以相反的方式缩小:
function isOk<T>(value: T | null | undefined): value is T {
return !isNotOk(value);
}