typescript - 可能吗?一个谓词函数断言参数非空(以及其他某些属性)
我经常发现自己在编写谓词时,为了方便,会接受我正在测试的值或 null(对 null 返回 false)。例如。
function isBlobby(s: Shape|null): boolean {
return s != null && ...
}
假设 x 已知具有类型 Shape|null,能够写成如下会很好
if (isBlobby(x)) {
doSomethingWith(x.color) // No need for x!.color
}
如果我将 is Shape 作为 isBlobby 的返回类型,这可以工作,但如果我加上 else 就会出问题 —— 类型检查器会假设 else 部分的 x 为 null。
当然这是有道理的——is 语法是用于类型谓词的,而不是一般谓词,但我想知道是否有办法让类似这样的东西工作?
谢谢!