我一直有一个非常奇怪的Object is possibly 'undefined'错误。我的目标是这样的条件:
if (productPages?.length && productPages[productPages.length - 1].docs?.length < 10){...}
但条件productPages[productPages.length - 1].docs?.length < 10导致我出错Object is possibly 'undefined'。
问题是,如果我将<运算符更改为另一个,==或者===错误消失,对我来说,这似乎很奇怪。
我不想使用! - Non-null assertion operator,但我找不到任何其他解决方案。
测试的打字稿版本:3.7.3 和 4.0.5。
undefined如果可选链接失败,整个左侧将评估为。在这种情况下,您的代码如下:
if (undefined < 10)
Run Code Online (Sandbox Code Playgroud)
这没有意义,所以 TypeScript 引发了错误。
使用===如果值是不是因为检查,看看问题===到undefined是不是荒谬的。
如果docs肯定会存在,然后从它的可选链:.docs.length。但是由于您不知道 是否productPages[productPages.length - 1]存在,您还需要一个可选链。(你?.可能在错误的地方。)
如果您不知道是否docs存在,则需要弄清楚您想要的逻辑:如果找不到嵌套数组,您是要运行代码,还是只想运行代码如果找到嵌套数组?更改为类似:
const length = productPages[productPages.length - 1]?.docs?.length;
if (length !== undefined && length < 10) {
// or
// if (length === undefined || length < 10) {
Run Code Online (Sandbox Code Playgroud)
取决于你想要的逻辑。
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |