【发布时间】:2020-04-15 17:28:04
【问题描述】:
在 JavaScript 中,null operands in a relational expression are treated as 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
有没有办法告诉编译器这里可以接受可空操作数?
我可以在f() 上使用非空断言关闭编译器,但我担心f()! 可能会误导代码审阅者,因为f() 可以在这里返回空值。
【问题讨论】:
标签: typescript relational-operators strictnullchecks