如果有几个方法依赖于非空值,则每个方法都应该检查该值,如果该值为空值,则抛出异常。最好将空检查提取到助手方法中,而不是将其复制到任何地方。但是,如果我们这样做,我们就不能对每个方法中的值进行类型检查。例如,在不提取空检查的情况下: class FooClass {
public thisNeedsFooToNotBeNullfunction
function f() { return /* either a number or null */; }
但是在TypeScript中,如果为f提供类型注释并启用严格的空检查,则会得到编译器错误Object is possibly 'null'。return /* either a number or null */; }
let b =
我已经成功地编译并运行了我的代码,但是我的Typescript编辑器仍然在Playground Link的第57行报告val的警告 for (const [key, val] of Object.entries也许它警告我,该对象可能符合SearchInvocation类型的形状,但其他(非托管)键值对可能已经添加到顶部,并且它们的内容是未知的。但是,在从ProxyInvocation类型遍历Object.entries()时,我没有收到等效的警告,它看起来有些等效,但必须进行隐式保护。如果非托管