问题标签 [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 投票
2 回答
9235 浏览

javascript - 如何结合解构赋值和可选链接?

我有一个带有一些可选字段和该类型变量的 TypeScript 接口:

我想放入longFieldName一个同名的变量。

如果config不是可选的,我会使用解构赋值来执行此操作而无需重复longFieldName. 但它是,所以我得到一个类型错误:

我可以使用可选链接来简洁地处理这种undefined情况:

但现在我必须重复一遍longFieldName

我也可以吃蛋糕吗?我可以使用可选链接来处理这种undefined情况而不重复longFieldName吗?如果不是,最简洁/惯用的解决方法是什么?见操场链接

0 投票
2 回答
18457 浏览

typescript - TypeScript 3.7.2 - 当前未启用对实验性语法“optionalChaining”的支持

在我的项目中,我使用的是应该支持可选链接的 TS 3.7.2。但是当我尝试这样使用它时:const state = urlParams.state?.toString()我收到错误:

当前未启用对实验性语法“可选链”的支持

将 @babel/plugin-proposal-optional-chaining ( https://git.io/vb4Sk ) 添加到 Babel 配置的“插件”部分以启用转换。

我检查了发行说明,并没有看到有关为该功能添加 tsconfig 选项的任何要求。

我想知道当我已经在使用 TS 时是否需要 babel 插件和配置,我应该如何修复错误?

0 投票
1 回答
941 浏览

javascript - 在本地主机上工作但不在生产环境中的可选链接运算符

我不确定这是我做错了什么,还是我错过了一些东西,但我已经在?.我的 create react 应用程序的某些部分添加了可选链接。IE

这适用于我的 Mac 上的 chrome 本地主机,也适用于 Safari 中的 Xcode ios 13 iPad 模拟器,但是当我使用部署 firebase 应用程序时

应用程序崩溃说这customFieldName是未定义的,在某些情况下它将是数组 customFields 将为空/null,但我会注意我的回退到“自定义字段”字符串设置为默认值。

所以我的问题是为什么可选的链接?.代码在本地主机中工作而不是在部署中?我已经检查过该浏览器正在加载最新版本,它是。

我也知道可选链接?.是一项新功能,因此可能不适用于所有浏览器,尤其是旧版本。

我将不胜感激任何帮助。

我认为将来可能无法知道代码在开发/本地主机中工作时是否真的在生产中工作。

0 投票
1 回答
36 浏览

swift - 如果第一个类型失败,则可选向下转换为另一种类型

我有一个类型的代表类UIViewController

这个委托可以是 UIViewController 的 2 个子类之一。两个子类都包含一个具有相同名称且参数相同的方法。

目前我正在写这样的声明,当然它有效,但从 DRY 的角度来看,它让我发疯。

我想做类似的事情

但是上面实际上并没有降低委托,因为我收到一个错误,即 UIViewController 类型不包含“方法”

如果第一个向下转换失败,我还能如何链接它,第二个被尝试并且委托被视为任一类型而不是基数UIViewController

0 投票
5 回答
54816 浏览

javascript - 如何将可选链接与数组或函数一起使用?

我正在尝试使用带有数组而不是对象的可选链接,但不知道如何做到这一点:

这就是我想要做的myArray.filter(x => x.testKey === myTestKey)?[0]。还尝试使用函数进行类似的操作:

但它给出了这样的错误,所以如何将它与数组或函数一起使用。

0 投票
1 回答
4894 浏览

javascript - JavaScript 可选链动态属性

我正在尝试访问具有安全性的动态属性,该安全性由TS 中可用的可选链接提供。但是,这似乎是无效的。

错误

似乎可选的更改将应用​​于[]作为类型的可选,但不适用于内部的值。

我怎样才能使这个可选而不必这样做[undefined || someDefaultValue]

0 投票
0 回答
168 浏览

reactjs - 支持 nx.dev 中的可选链接和无效操作

第一步我添加 "typescript": "~3.7.5" 然后我添加 "prettier": "1.19.1" 它应该已经足够了,但我仍然收到这个错误:

'optionalChaining' 当前未启用

所以我尝试添加 "react-scripts": "3.3.0"

"@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3"

"@babel/plugin-proposal-optional-chaining": "^7.8.3" 但问题仍然存在,我是在我的普通CRA应用程序中完成的,但我不知道如何更改nx.dev配置中的babel预设列表。

0 投票
3 回答
11357 浏览

javascript - 如何使 webpack 接受没有 babel 的可选链接

设想:

  • 我们正在使用 webpack 4 从我们的 Javascript 源代码创建一个包。
  • 我们没有使用 Babel,因为我们只为单一平台(最新的 Chrome)创作,而且我们只使用 Chrome 中直接可用的功能,因此不需要转译。

这样做的好处是捆绑包更小,开发时周转时间更快

现在我们想开始使用第4 阶段的 可选链接功能,该功能可以在 Chrome 中使用 flag 启用

我试过用谷歌搜索这个,我能找到的只是babel 有一个插件

问题:有什么方法可以让 webpack 在省略 babel 的同时接受这种语法?

以下是 webpack 当前报告的内容:

0 投票
1 回答
88 浏览

javascript - 是否有可选链接/无效合并的糖以防止 Typeerrors 说 Array.map?

是否有任何糖可以确保 map 不会使用可选链接/ nullishcoalescing 之类的工具出现类型错误?

0 投票
2 回答
2271 浏览

typescript - 带有 TypeScript 3.7 可选调用的“no-unused-expressions”

我将 TypeScript 3.7 与@typescript-eslint/parserlinting一起使用@typescript-eslint/eslint-plugin

我正在尝试使用可选链接语法,它在可选调用旁边工作得很好。

这给了我一个错误:eslint(no-unused-expressions)

有什么方法可以让它与可选调用一起工作?