反向TypeScript类型Guard

时间:2016-07-27 19:07:40

标签: javascript typescript typescript2.0

我正在使用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);
}

当然,这种语法不起作用。有没有一种已知的方法来实现这一目标?

1 个答案:

答案 0 :(得分:9)

我偶然发现了答案;仿制药。只是以相反的方式缩小:

function isOk<T>(value: T | null | undefined): value is T {
  return !isNotOk(value);
}