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


14

TypeScript 3.7现在支持可选的链接运算符。因此,您可以编写如下代码:

const value = a?.b?.c;

即,您可以使用此运算符访问对象的属性,其中对象本身可以是nullundefined。现在我想做的基本上是相同的,但是属性名称是动态的:

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

但是,出现语法错误:

错误TS1005:“:”。

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

PS:该提议似乎暗示这是不可能的(但也许我弄错了语法示例)。


1
您错过了要点,操作员是?.
zessx

是的,当然,非常感谢😊
戈洛罗登

Answers:


17

使用括号符号和可选链接访问属性时,除括号外,还需要有一个点:

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

这是TC39提案采用的语法,因为否则解析器很难弄清楚这?是三元表达式的一部分还是可选链的一部分。


1
我更换硬盘不可能的
vol7ron

@ vol7ron为什么这样-我认为它可以期待:
AnArrayOfFunctions

它将无法区分,尤其是在出现错误时。
vol7ron
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.