TypeScript 3.7 现在支持 optional chaining operator .因此,您可以编写如下代码:
const value = a?.b?.c;
也就是说,您可以使用此运算符来访问对象的属性,其中对象本身可能是 null
或 undefined
。现在我想做的基本上是一样的,但是属性名称是动态的:
const value = a?[b]?.c;
但是,我得到一个语法错误:
error TS1005: ':' expected.
我在这里做错了什么?这可能吗?
proposal似乎暗示这是不可能的(但也许我把语法示例弄错了)。
最佳答案
使用方括号表示法和可选链接访问属性时,除了方括号外还需要使用点:
const value = a?.[b]?.c;
这是 TC39 proposal 所采用的语法, 因为否则解析器很难判断这个 ?
是三元表达式的一部分还是可选链的一部分。
我的想法是:可选链接的符号不是?
,而是?.
。如果您正在进行可选链接,您将始终使用这两个字符。
关于javascript - 使用可选的链接运算符进行对象属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58780817/