即使我有用户定义的类型防护检查它是否不是,值也可能未定义

时间:2020-06-08 06:29:56

标签: typescript

在下面的代码中,我使用用户定义的类型防护来检查是否未定义val(如果有的话,请尽早返回)。类型脚本编译器似乎对此没有把握。当我尝试将val用作字符串Object is possibly 'undefined时收到警告。

function isUndefined(val: any): val is undefined {
  return typeof val === "undefined";
}

function calculateFontSize(el: SVGElement) {
  const val = getPresentationAttribute(el, "font-size");
  if (isUndefined("val")) {
    return null;
  }
  // const val: string | undefined; Object is possibly 'undefined'.
  return Number.parseFloat(val.replace("px", ""));
}

为什么TypeScript不能从用户定义的类型保护程序中选择类型?

1 个答案:

答案 0 :(得分:3)

传入val,而不是"val"

  if (isUndefined(val)) {
    return null;
  }