逆 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;
  }
}

这会使 nullundefinedNaNInfinite 无效。我想要一个相反的:

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);
}