问题标签 [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.
javascript - 关于 PhpStorm 中可选链接和空值合并 JavaScript 运算符支持的问题
我想问是否有人知道如何支持 PhpStorm 中的 JavaScript 空值合并运算符 ( ??
) 和可选链接运算符 ( ?.
)。
目前我正在 PhpStorm 中开发一个 react-native 项目,两个运算符都工作正常,但 PhpStorm 设置了一个expression expected
错误,并且所有使用这些运算符的文件都带有错误下划线。
如何添加对这些功能的支持以使 IDE 满意?
prettier - 更漂亮:可选的链接支持
VS 代码 > 输出 > 更漂亮
在一个新项目中:
VScode 使用 Workstation 版本 3.8.2(显示在左下栏中 TypeScript 3.8.2 ) Prettier v 2.2.2
swift - 关于 swift 中的可选链接的一个小问题
我在操场上运行这些代码,但出现编译错误
但它在下一行运行良好。这两者有什么区别?我什么时候应该使用“!” 明确的,什么时候不需要?
以下是代码:
typescript - 具有索引签名的接口的可选链接
我定义了两个接口。第一个有一个可选字段,第二个有一个索引签名:
为什么number | undefined
当我使用可选链接访问属性时,第一个接口给我一个 type 的结果,而第二个接口只给我 type number
?
javascript - 为什么 TypeScript 在可选链接运算符之后显示“无法调用可能是'未定义'.ts(2722)的对象”错误?
在这段居家期间,我决定深入研究 TypeScript,并开始通过实现一些基本的数据结构来实践它。我正在尝试实现一个使用自定义节点的自定义堆栈。
我的 StackNode 定义如下:
和实际的堆栈:
这里的问题是pop-method 中可选链接运算符的行this.top = this.top?.next()
我的理解是表达式this.top?.next()
应该等同于
(this.top === null || this.top === undefined)? undefined : this.top.next()
但我仍然收到错误
无法调用可能是“未定义”的对象。ts(2722)
即使在那个阶段它不应该是未定义的,也可以在进行调用时。
为什么?我在这里想念什么?StackNode.nxt 和 Stack.top 都允许未定义。我试图以这样的旧方式做到这一点:
但我仍然得到同样的错误,即使在这里应该确保this.top
不能未定义,但必须或至少应该是 StackNode 类型。
这应该是如何工作的,当从空堆栈弹出时,pop 方法将返回 undefined 并且当弹出最后一个元素时,它的下一个未定义的元素被设置为堆栈的顶部。
我正在使用 TS 3.8.3
javascript - 对象解构或可选链接哪个更好?
鉴于有两种编写代码的方式,就有效代码而言,哪种方式更好?const { match: { params: { clientId = '' } } } = this.props;
const clientId = this.props?.match?.params?.clientId ?? ''
注意我们可以忽略任何中介都可能为空的事实。我的问题更具体的是为什么每个人都默认使用对象解构,当它可以像第二种格式一样简单地编写时
javascript - 使用 && 运算符,React 显示 0
我正在使用以下语句有条件地渲染组件。
{data?.length && <RenderThisComp />}
数据 - 一个数组。
RenderThisComp - 只有当数据数组有任何值时才需要渲染的组件。
如果data
数组的长度为零,则它显示为零,而它不应该显示任何内容。
javascript - Javascript ES2020 中是否有等效的 optionalChaining?
众所周知,ES2020 支持 optionalChaining。例如,我们可以编写如下代码: let x = {a:{b:'c'}}; 控制台.log(x?.a?.b); 我们会得到'c'。
但是在某些情况下,我们可能想要使用像 x[a][b] 这样的表达式而不是 xab 我们可以使用像 x?[a]?[b] 这样的表达式来评估每个链接对象的验证吗?
typescript - 带有 Typescript 3.8.3 的 Angular 9 是默认支持 IE 中的可选链接,而无需更改 polyfill (core-js)?
我们正在将我们的系统升级到 Angular 9.1.1,它具有 Typescript 3.8.3。@angular-devkit/build-angular@0.901.1 在下面使用 core-js@3.6.4。
我们想开始使用 Typescript 中的可选链接功能,而不是 lodash _.get,例如
但是,我们仍然需要支持 30% 的 IE 用户。有谁知道IE是否默认支持?如果没有,我们是否可以打开支持,例如在 polyfill.ts 中添加配置?我搜索了 core-js 并没有看到任何与可选链接相关的内容。
非常感谢!