javascript - 使用可选的链接运算符进行对象属性访问

标签 javascript typescript optional-chaining

TypeScript 3.7 现在支持 optional chaining operator .因此,您可以编写如下代码:

const value = a?.b?.c;

也就是说,您可以使用此运算符来访问对象的属性,其中对象本身可能是 nullundefined。现在我想做的基本上是一样的,但是属性名称是动态的:

const value = a?[b]?.c;

但是,我得到一个语法错误:

error TS1005: ':' expected.

我在这里做错了什么?这可能吗?

proposal似乎暗示这是不可能的(但也许我把语法示例弄错了)。

最佳答案

使用方括号表示法和可选链接访问属性时,除了方括号外还需要使用点:

const value = a?.[b]?.c;

这是 TC39 proposal 所采用的语法, 因为否则解析器很难判断这个 ? 是三元表达式的一部分还是可选链的一部分。

我的想法是:可选链接的符号不是?,而是?.。如果您正在进行可选链接,您将始终使用这两个字符。

关于javascript - 使用可选的链接运算符进行对象属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780817/

相关文章:

javascript - 将 Javascript 替换为 Typescript

javascript - 如何确保可点击对象不会传播到错误的元素?

javascript - 如何更好地编写它,例如lodash

javascript - 如何在移动 View Owl Carousel 中运行jump(n)幻灯片?

javascript - 如何验证从多个下拉列表中选择的值?

Angular - 按顺序进行多个 HTTP 调用

typescript - 什么是 "DefinitelyTyped"?

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

typescript - 导入带有可选链接的模块时出错