在 JavaScript 中,关系表达式中的空操作数被视为 0:
function f() { return /* either a number or null */; }
let b = f() < 0; // false if f() returns null
但是在 TypeScript 中,如果我为它提供类型注释f
并打开严格的空检查,那么我会得到编译器错误Object is possibly 'null'
:
function f(): number | null { return /* either a number or null */; }
let b = f() < 0; // <-- error TS2531
有没有办法告诉编译器这里可以接受可空操作数?
我可以用 on 的非 null 断言关闭编译器f()
,但我担心这f()!
会误导代码审阅者,因为f()
可以在这里返回 null。