问题标签 [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 回答
16 浏览

javascript - 哪些真值没有属性?

我正在尝试编写最短的可读代码来访问我没有任何信息的变量的属性,但我希望此属性访问是安全的:

  1. x如果是null或可能会抛出undefined
  2. 会很完美,但我不能使用可选链接(由于某种原因超出了这个问题的范围)
  3. Works & 被 lodash 和 coffeescript 等其他库用来以空安全的方式访问道具,但读起来很难看
  4. 我想使用它,但是如果 JS 中存在不允许您访问其属性的真实内容,这将失败 - 这甚至会发生吗?我能想到的只是nulland undefined,但也许存在一个奇异的 JS 值,它既真实又抛出属性访问
0 投票
0 回答
105 浏览

javascript - 由于 Nullish Coalescing 和 Optional Chaining 运算符,在 VS Code 的终端上会出现警告

当我在代码中实现上述任何运算符时,都会出现警告。但是代码运行没有任何问题。我的问题是,什么会导致这样的怪异?PS:VScode版本:1.53.2

这是截图

0 投票
1 回答
449 浏览

typescript - 带有检查最后一个参数的 Typescript 可选链接

我有一个看起来像这样的 if 语句:

现在任何参数都可以未定义,所以我想使用可选链接:

arg2这里的问题是我无法检查arg2?.arg2?因为 Typescript 需要额外的参数或认为我想使用条件运算符。所以我想知道是否让这个 if 语句起作用的唯一方法是:

我有几种情况,我尝试使用可选链接并需要检查最后一个参数。我对编程很陌生,所以如果有人可以告诉我如何正确编写它或者可以指向我解释为什么我不能或不应该将最后一个参数作为可选参数的文档,我会很高兴。

EDIT1:对于那些想知道 arg1、2 和 3 类型的人:在我的情况下,我有一个表格,您可以填写一个表格来为特定流程创建自动化。您有一般信息和输入和输出,可以是 SMB 或电子邮件类型。

界面看起来像这样:

提交表单时,我会检查任何字段是否为空或为空。当uncPath像这样检查时,我得到一个错误“可能未定义”:

所以我把它改成:

仍然收到未定义的错误,所以我将其更改为:

这可行,但我想知道是否可以将其简化为以下内容:

显然,process?.input?Typescript 认为我想使用条件运算符,所以我正在寻找另一种方式。

我希望这能澄清一点。对不起,如果我不清楚(也许仍然是)。

EDIT2:显然我更清楚的例子是缺少一些我目前不知道它是什么的东西。正如 VLAZ 在他的评论中指出的那样,它应该与:

现在,TJ Crowders 的回答解决了我的问题,即如何检查具有无效合并的可选链的最后一个参数。

0 投票
2 回答
1218 浏览

javascript - 可选链接 - Function.prototype.apply 在未定义时调用,这是未定义而不是函数

对函数调用使用可选链会导致表达式自动返回 undefined,而不是在找不到方法时抛出异常。

注意:代码使用的是spread syntax,而不是rest parameters

错误:

0 投票
0 回答
395 浏览

node.js - 尽管使用 Nodejs 14,nextjs 似乎不理解可选链运算符(?)

编译使用代码的页面时:

我得到:

这看起来很像 nodejs 版本不匹配。但是 console.log 的模块加载输出是:

11.11 https://nodejs.org/download/release/v14.16.0/node-v14.16.0.tar.gz packages/graphql-server/src/index.ts:32

所以它是节点 14,它应该能够理解?

Nextjs 版本是 10.0.8。

nextjs 抛出此 Module Parse failed 错误的原因可能是什么?

0 投票
1 回答
30 浏览

javascript - OPTIONAL CHAINING 和 NULLISH COALESCING 运算符的组合未呈现预期结果

我只是在学习可选链空值合并的组合。这里是object

当我试图检查该方法是否存在时,无论如何它都会打印出它们。我做错了什么?

0 投票
3 回答
347 浏览

javascript - 动态字符串的可选链接作为 JS 中的属性

我有以下示例代码:

我正在尝试获取如果存在于对象中的道具的值,例如

所以对于上面的示例代码:我希望输出为 ["aaa", "bbb", "ccc"]

我知道属性的第一部分(在本例中为“输入”),第二部分将仅为索引

是否可以使用可选链接知道值?我错过了什么?

0 投票
1 回答
86 浏览

javascript - 如何使用 Immer.js 将新字段添加到 reducer?

例如,

如何将新的嵌套字段添加到对象中?我无法设置该字段,因为有错误Cannot read property 'date' of undefined

结果我想要:

0 投票
1 回答
59 浏览

javascript - 这两行代码有什么不同,一个抛出错误,另一个不抛出?


我正在编写一些代码,偶然发现了一些我不明白的东西。在 Chrome 89.0.4389.128 (Official Build) (64-bit) 中,上面的代码给出了这个:

这两行在我看来都是一样的:"a12312a".match(/^\d+/)?.[0]is an undefined,并且他们正在尝试读取应该抛出 alength的属性。但是第一行没有,而第二行没有。undefinedTypeError

…为什么?我很困惑。我错过了一些非常基本的东西吗?

0 投票
0 回答
235 浏览

javascript - VS Code 不接受 Node.js 代码中的可选链接运算符

我在 VS Code 中使用 Node.js 14.15.1,当我尝试使用可选链接运算符时它显示错误。除了 Express,我没有使用任何其他依赖项。这行代码相当简单。

您能否阐明可能的解决方法?