在下面的代码中,我使用用户定义的类型防护来检查是否未定义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不能从用户定义的类型保护程序中选择类型?
答案 0 :(得分:3)
传入val
,而不是"val"
:
if (isUndefined(val)) {
return null;
}