问题标签 [optional-chaining]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
51 浏览

typescript - 与可选链接一起使用时,Typescript 不理解未定义的返回类型

我有一个非常简单的代码:

这给出了一个错误:

类型“未定义”不可分配给类型“MyData”。

这是相当合理的,因为我的类型MyData不允许未定义。

但如果我现在写这个:

然后它编译没有麻烦。我不明白这里发生了什么,因为如果state.data是未定义的,那么它应该真的返回未定义并且对编译器来说应该很明显。

我在这里错过了什么吗?

PS这是类型的最小示例:

0 投票
2 回答
541 浏览

javascript - 在数组映射期间结合 toLowerCase 和 indexOf 的可选链接

对于自动完成输入,我在输入过程中搜索项目属性。现在我想改进这段代码

有了这个:

我使用可选链接,因为description可以为空或未定义。

但它不起作用,这意味着该函数总是返回未修改的数组。此外,当在一项的描述中找到该值时,该数组不会被过滤到仅该项。

除了使用诸如此类的“旧”检查之外,还有什么解决方案if (str !== undefined)

0 投票
1 回答
1817 浏览

javascript - 可选链接在 if 语句中使用时会导致意外结果

我在代码中有一个 if 语句,它检查是否定义了一个对象,然后检查它的一个属性是否相等。我的 if 语句是这样的:

但是现在我使用了可选链接并将我的 if 语句更改为:

但是现在我的代码在这种情况下无法正常工作。即使 obj 未定义,代码也会进入 if 语句。请有人解释为什么会这样?

0 投票
3 回答
1671 浏览

javascript - 使用无效合并或可选链接进行安全解构

目前我正在使用以下代码进行解构:

现在,由于我们有可选的链接,我可以这样做:

有没有更好的方法或安全的方法来使用无效合并或可选链接进行解构?

0 投票
1 回答
179 浏览

javascript - 解构一个可选的链接对象,以获得......其余的?

我有这个设置

我最终得到一个不存在的错误discard_me,但如果也不存在,这是可以预期chaining的。似乎可选链接应该涵盖分配的左侧和右侧的关注点。

有没有办法在没有无效合并的情况下解决这个问题?

0 投票
1 回答
1139 浏览

typescript - Angular 10 和 ES2020 中的可选链接模块解析失败

刚刚从 9.0 更新到 Angular 10

现在,在我的代码中每次使用可选链接(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#optional-chaining)都会导致它自己的以下错误实例

我确认此错误仅在我的 tsconfig.base.json 文件中按照以下针对 es2020 时发生,但在针对 es2019 时很好

我确认此错误发生在新生成的新 Angular 10 应用程序中,如下所示,然后将目标更改为 es2020(所以它不是我的代码!)打字稿版本是 3.9.7

我还注意到,在 es2020 的发行说明中,“可选链接”现在是一项新功能。这让我怀疑“可选链接”的 Typescript 编译不知何故没有与新的 es2020 功能结合?

如何在 es2020 中使用可选链?

0 投票
3 回答
1041 浏览

javascript - JSHint 抑制可选链接的错误

当我发现可选链接?.)时,我正在编写一些 Javascript。我决定在我正在编写的一些代码中需要它。当我完成输入代码时,我注意到 JSHint 给了我一个错误,指出Expected an identifier and instead saw '.'. (E030) jshint(E030). 以下代码运行时没有任何错误(MDN 兼容性表),但 JSHint 仍然会给出警告。

我发现了另一个与此相关的StackOverflow 问题,但该问题专门询问 ESLint,而这个问题是关于 JSHint。我还搜索了 JSHint GitHub 存储库的问题选项卡,但我找不到任何东西。有没有办法抑制这种错误?我正在使用 Visual Studio Code Insiders。

编辑信息取自Code - Insiders > About Visual Studio Code - Insiders

0 投票
1 回答
107 浏览

binding - SwiftUI Picker 选择参数给出“表达式类型 'Binding<_>' 在没有更多上下文的情况下是不明确的”错误

我在下面的代码中得到一个表达式类型 'Binding<_>' 是模棱两可的,没有更多的上下文错误$order.quantity.contracts

事实上,Xcode 并没有在键入后提供类contracts中的属性。以下是模型:Quantity$order.quantity.

有人可以解释这个问题并提供解决方案吗?

0 投票
1 回答
66 浏览

javascript - 从复杂的 JSON 迭代到表中

我正在努力使用 JavaScript 中的可选链接将 JSON 对象映射到Tablein React。这是有效载荷:

markets以前,数组中只有一个对象,即Winner市场。这是我针对该场景的解决方案,我将Winner直接过滤并遍历表格:

但是,现在那里的Finish Last市场刚刚被添加到markets数组中。我还计划在未来增加更多的市场。我希望表头看起来像这样:

在一列中包含团队名称,以及在相关列中对应于正确市场的所有概率。这样做的最佳方法是什么?

0 投票
3 回答
2301 浏览

javascript - 在 React 中将 Promise 分配给变量

总的来说,我对 JavaScript/React 非常陌生,并且在和 的概念上苦苦Promise挣扎async

首先,我有getSimById一个 JS 文件中的 API 调用,它返回一个Promise

并且handleResponse是一个异步函数。

现在我有一个返回的功能组件Table

在这段代码中,我想映射reformattedData为一个数组,并最终映射到返回的Table. 但是,reformattedData在这种情况下,它不是一个数组,实际上是一个Promise. 正因为如此,每当我尝试访问reformattedData[0]它实际上返回的东西时undefined,我都无法通过它在Table. 在这种情况下,如何将 Promise 分配给变量,以便对其执行操作?